If I want to run a processing job that takes a 1000 core-hours and have the results today, I can do that on their VMs for a couple dollars per run. Being able to do that on owned hardware or dedicated hosts would be orders of magnitude more expensive.
Similarly, if you're running hosted app that on most hours doesn't overload a single server, on peak hour fills three hosts, but on a large advertising event or accidental viral link takes fifty hosts for a day, and then goes back to normal - then you don't want to run it on VMs where you have to pay for them by month.
That's true, but those are extreme niche use cases, and in most cases people have a substantial base load that they can run on dedicated servers for anything from 1/2 to 1/3 of the cost of AWS/Azure/Google (even with reserved instances and factoring out retainers for someone to handle ops issues).
Nothing stops you from mixing and matching dedicated servers with handling batch jobs and peaks with cloud servers. In fact, most data centre providers can offer the full range from unfurnished colo space to cloud offerings out of the same data centre these days - either directly or via partners hosted in their buildings. At least that's my experience.
Similarly, if you're running hosted app that on most hours doesn't overload a single server, on peak hour fills three hosts, but on a large advertising event or accidental viral link takes fifty hosts for a day, and then goes back to normal - then you don't want to run it on VMs where you have to pay for them by month.