While many merchants routinely allow this, many merchants have agreements with the sponsoring bank that won't allow a credit to a card in excess of the amount charged to the card originally.
So if you spent $100, the merchant can't credit more than $100 back to that card. Makes good sense.
If you spent $0 on a card . . .
Among the reasons, many are mentioned above, but another is just the fee issue. If the merchant has an account that returns fees on refunds (not all do) then the sponsoring bank wants to be sure they're getting the right fees back from the cardholder's bank. Otherwise, you get the 150,000 points problem as listed above, all at the merchant's expense.
Don't forget, for a merchant to accept your AA Platinum Citi Visa probably costs them something like 3.6%, where to refund to your generic debit card, they only get back maybe 1.6% (again, if they even get fees refunded). So the merchant is out a nice chunk of change, and wants a system that disallows this.
Anyone ever get a refund on a closed card? Works every time, even though the account is closed by request, or for fraud, or even with an expired number. And this is why.