There's a simple reason why airlines are allowed to overbook: the product they're selling- a seat on an aircraft- has no shelf-life. Once the flight departs, the airline can never recover the loss of an empty seat.

Unfortunately, a statistically significant number of passengers don't show up for the seats they've reserved. In the meantime the airline may have turned away paying customers for the flight. Worse yet, many of these no-shows aren't due to valid reasons. Passengers themselves will try to hack the system. For example, say you want a whole row to yourself while on a flight. So you book as a family taking up the whole row, and then show up as a person traveling alone. You get to stretch out over all the empty seats, while the airline loses perhaps thousands of dollars of revenue. Or, passengers will book two or more airlines going to the same place, just in case one is delayed. Or, or, or... Over-booking is a fact of life for airlines, and it's not going away.