It's reputational suicide for any hotel with an ounce of intelligence
On the contrary; it's standard practice in the industry. They all do it.
Then they are thieves, plain and simple. If you have paid upfront for a booking then that room is guaranteed as yours (save if the hotel has a fire or flood or similar). If you don't turn up to use it, that's your problem.
It's no different from committing to buy (and sell) anything else. It doesn't matter if the product is used by the customer or not, it is reserved for them whether they do or don't - and they must pay for it, as agreed, regardless.
I agree with PP that they wouldn't allow it the other way around. I wonder how many people they have charged who didn't turn up - for whatever reason - knowing full well that they had sold their room again and, if they had turned up, there wouldn't have been a room for them anyway.
I remember this being highlighted on Watchdog years ago. It was a family who were leaving on an early flight from Gatwick and had booked (and paid for) a TL very close to the airport for the night before, but they were shunted to the nearest TL that had availability, which turned out to be Grantham, which, iirc, was further away from Gatwick than their own home.
Ever since watching that, if ever we're looking for accommodation somewhere, we ignore TL as though it doesn't exist, as we would book a hotel for the purposes of actually staying there at the agreed and paid-for time - exactly the same as we would ignore a branch of Kwik Fit if we were looking for somewhere that could sell us food.