There's a perceived security benefit from running a virtualized environment.
There's a perception that now we've have failed since the 1960s to create a secure OS, we can all of a sudden create secure virtual machines, where one virtualized environment cannot interfere with another. This is nonsense, of course. We can't even created CPUs that completely protect two running processes from each other.
More complexity and more lines of code simply means more bugs.
When you want a clean environment for compiling/testing purposes, a virtual machine is handy for avoiding additional hardware purchases, but that's really the extent of it. In many cases, properly designed applications could be run exactly like you describe, each running in their own userid where the OS decides which resources can be accessed.