So this is interesting, but not totally surprising.
One of the things (I think) that people want to do when marketing a show is get people to book in advance - not just because that gives you money and numbers early, but because if someone see a show advertised and thinks "that looks interesting, but it probably won't sell out, so I'll just get a ticket on the door" then a lot of the time when the night comes around they then say "fuck it, I'm just going to the pub instead". Making people pay money - and I think even a small amount of money would do - for a ticket means they've made a commitment to going to see the show, and are therefore less likely to not bother to turn up. If you are keeping track of the money, then money taken on the door is just as good as money taken in advance, but money not taken on the door because they didn't go is not as good as money taken in advance.
Conversely, when you're giving tickets away for free, advance booking is difficult, because anyone who things "that looks interesting" can grab a ticket just in case, and are then in no danger of "missing out" if it sells out, but are just as likely to not bother going as someone who hadn't bought a ticket at all.
If you're absolutely committed to giving your tickets away for free - and I understand why you might want to do that - and you don't want people to have to drive across town only to find the queue on the door is a mile long and they don't get in - I'm not sure what the options are.
1. Charge a deposit with the booking, and return it when they show up? Unfortunately gets you involved with all the credit card processing fees, which won't get refunded.
2. Name and shame the no shows? You'd need scanners for access control then, and it would be very embarrassing if you let someone in without scanning them and then accused them of wasting a ticket.
3. Make getting the tickets a bit more of an effort. How about a lottery? So you've got 400 seats for the White Whale, and more than 400 people who say they want to go (because it sold out). Instead of just giving the free seats away first-come first-served, you could collect names, and then when either X times as many people have registered as you have seats, or there's only Y days left before the performance (X = 2 or 3, Y = 7 or 14?) you do the draw. That way, people who registered and "Win" tickets feel more special for having won them. And I think that this might make them more likely to use the tickets than if they just got them for free.
I like 3. And the other benefit to 3 is that there's a built in cooling off period, so if you tell someone they've won a ticket, then it's the ideal time for them to say "actually, I'm not that fussed", and you can easily roll the dice again and give it to someone else.