The argument against gift cards is well known: they’re just cash you can only spend in one place, and they are profitable because people forget to use them or don’t use the entire balance. Andrew Leonard, though, has a good argument in favor of gift cards:
So why not just give the boy cash? Surely cash would allow an even more efficient allocation of resources? But cash is inferior, I think, because cash, like it or not, carries with it some assumption of responsibility. You don’t want to waste your cash frivolously, or you might feel compelled to save it for some greater goal. You might end up, horror of horrors, being forced to use it to buy some other kid a birthday present! But a gift-card to, say, GameStop, is a ticket to freedom. Go be frivolous! Buy a game! Buy whatever game you want! It’s better than money because it comes with an explicit, unignorable directive to use it in a way that gives you pleasure.
The upshot seems to be that cash is a better gift for the irresponsible, but that gift cards are a better gift for responsible people. That works nicely, because irresponsible people are also the ones most likely not to use their gift cards at all.