VM memory not completely static
> You also usually have to statically allocate RAM to VMs
Not entirely true. With techniques like memory ballooning the OS may think it has 4Gb, but really it's only being given 2Gb -- and memory ballooning isn't terribly damaging to VM performance done correctly. There's also memory compression, and VM swapping. After a quick glance through, this article (http://media.kingston.com/images/branded/MKP_339_VMware_vSphere4.0_whitepaper.pdf) looks like a good if somewhat dated survey.
There is also the possibility of hot-adding memory (or CPUs) to a running VM. It takes a conjunction of hypervisor and guest OS support, but it's shipping in VMware now: http://searchvmware.techtarget.com/tip/VMware-vSphere-hot-add-RAM-and-hot-plug-CPU-Not-so-hot-but-still-cool