Existe uma grande diferença no gerenciamento de memória entre o Xen e o OpenVZ.
Na memória OpenVZ é atribuída aos hosts "dinamicamente", se algum host não está usando memória - essa memória pode ser usada por outro host virtual.
No Xen - há uma área "fixa" de memória que a máquina virtual pode usar e que a memória não pode ser removida.
Se você deseja executar aplicativos java que usam muita memória - seria melhor / mais fácil usar o Xen. Se você tem controle sobre o host OpenVZ - eu acho que é possível configurar o gerenciamento de memória de alguma forma para evitar problemas como este.