I suppose that's because in they end, they want to allocate all the RAM, CPU, and network link available on each physical host. If a host has a 1Gb uplink, 32 cores and 256GB of RAM, and someone takes 1Gb bandwidth, 1 cores and 1GB of RAM, all the other cores can't be sold any more. It's easier for them to just split each host server in n VMs than to do some fancy stuff to try to maximize allocation.
That being said, some providers let you tweak everything independently. I know Gandi does [1], there are probably others.
(I don't use them, no idea what their cloud service is worth, I'm just showing the sliders)
[1] https://www.gandi.net/hosting/iaas/buy