Gift cards are great for the company they're tied to because they basically just made a sale of that amount and now it's up to the receiver to take the initiative to actually get anything from the company. Plus with inflation the value of the card always decreases. Plus you'll usually end up buying a little more than the amount on the gift card just to use it all up.
I think cash is usually a better gift, with one exception: a gift card can be a way to give someone permission to get something from a store that they would really like but usually not actually spend their own money there.
For me, I buy gift cards at a discount when I know I'm going to buy at a given store anyways. Might as well get $20 off of whatever.