It’s similar, but the general idea of a hypervisor is to separate resources and avoid this exact situation (it’s nuanced and there are some exceptions, but that’s the general use case).
The added complication would be that when you compile a binary for one virtual machine, the compiler may optimize things, blissfully unaware that there are other players possibly affecting memory. In a typical multithreaded environment, the compiler has a better picture of how shared resources are being used across threads, but that has to be declared manually for a hypervisor. So if you configure your hypervisor to share resources, you have to be even more vigilant in configuring the individual compilers to play nice.
I don’t have a ton of experience with embedded hypervisors, though. And it’s worth noting that there are lots of “hypervisors” out there, and some work very differently from others.