There's an increasing trend for properties to take a deposit while the reservation is still cancelable. The practice is typically disclosed when you book. I assume it's mainly to prevent the property from being left out in the cold if the guest has provided an invalid credit card to reserve the room.
I don't like it, either. It can be difficult to keep track of these things if you're a very frequent traveler, and I'm confident that the errors here are always in the hotel's failure (i.e., failure to refund).