I used to host everything on one or two VMs, but I've switched to using a separate VM for every service.
On the one hand, it's a security thing: if one service gets breached by a catastrophic security hole, the rest of the servers should hopefully be unaffected.
But the main reason for it is ease of administration. I don't need to bother with Python virtual envs or RVM for Ruby or juggle multiple PHP versions, I can just install the version I want with apt and everything just works.
When I pass a project on to someone else, I can just give them access to the VM so they can easily migrate it.
That convenience is worth a few Euros per month. (my total hosting bill varies but I don't think it was ever more than 50€ per month)