We use one partition per volume (with the exception of the first volume that includes boot and swap). This has many advantages (of course always depending on the application).
If your application has a large DB + many Files from my experience it's a good practice to separate data file system from root file system. Most obvious reason is that it's way easier to enlarge or shrink a data partition, but changing the boot partition is way more complicated. In most cases you need to unmount the partition in order to resize it.
You don´t need to reboot/enter maintenance mode the server in order to resize/modify/add/delete volumes/partitions.
Another reason is optimizing costs, so having different volumes at different costs is possible with this configuration.
About shrinking the root partition, what I normally do is choose a configuration with the disk size that fit's to the needs of my root file system. (I use Debian, very similar to Ubuntu and I use 15 GB root partition). I link /var/log to a data partition, which is normally what is causing space problems. In this way root partition remains pretty much the same size. Just make sure applications running clean up /tmp files.
You have also many other advantages:
1) You can create/build a new server (the root partition) and just move data from one server to the other. Easy way to update OS Version (less risk, less downtime)
2) If you separate applications from data, you can have another volume for applications and gives additional flexibility.
3) I your VM provider has different types of disks (different speeds, different prices) you can choose fast volumes for DB and slower volumes for executable (normally run once) and seldom used data.
etc) I am sure many other reasons to separate volumes/filesystems. Here just a few.