Indeed, what you raise is the very basis of contracts. The principle of a contract is that you pay a company to receive a service. If it is unable to provide that service, the rule normally is that the consumer is entitled to a refund. So why should it be different for an airline just because it's an airline? There's something in there that goes against the principle.
In the same vein, if you ordered a pepperoni pizza and they delivered a pizza that doesn't have pepperoni, again, there's a problem, because that's not what you ordered. If you bought a plane ticket for Saturday and are told you're not leaving until the following Monday, but it's okay because this new flight is within the 48‑hour time limit, that doesn't work either.