I was out Christmas shopping with my wife over the weekend and she was looking for a gift for our kids' teachers. For some, she selected a Barns & Noble gift cards and for others she selected Starbucks gift cards (mostly based on what stores she thought would be close).
My first thought is why not just give cash. Cash is definitely much more portable in that you can use it anywhere. Cash also retains its value forever (many gift cards start to lose value after 6 months to a year). And, Cash usually isn't misplaced in a drawer somewhere -- the recipient usually just puts it directly into their wallet/pocket.
But, there seems to be a negative aura around giving cash. Like the giver has put more thought into the present by selecting a store wherein the recipient is restricted for any purchases. Somehow the fact that the giver likely spent time waiting in line (and getting the people behind her to grumble when the cashier took so long figuring out how to charge up the gift card).
But this negative aura isn't everywhere. For weddings, it's usually fine to give cash. But for birthdays and especially for Christmas (or other holidays) there seems to be a some social drive to not give cash.
For me, you can feel free to just give me cash for any celebration. I'll never look down at receiving cash. In fact, I'd say it's preferred in many cases as nobody else can figure out the things I really need like I can :-).
Not that I'd look down at receiving a gadget either.