Why not cash?
Basically, so that the money is not spent on alcohol, etc.
A $ 5.00 McDonald's gift card would go for food. That is so anything given goes to the intended use. Not diverted for other things. I have heard that if someone asks for money and is offered a gift card, etc. and they refuse they were not really looking for money to buy food.
Someone who wants alcohol or drugs will then turn around and sell that $5 gift card for $2. I see it happen every day. It's a decent idea, don't get me wrong, but don't think that there's not a way around such a gift for those who are jonesing for their next fix.