OpenVZ uses a shared kernel with a layer of virtualization on top of the actual Linux OS. Since this kernel is shared by all VPS users on this node, the kernel is not customizable. Once you have hit your allocated RAM provided to you by the host, the remaining RAM becomes a free-for-all for users on the server. This is not a problem if you run small applications, but you may be in trouble if you are running something more resource intensive.
KVM allows you to set maximum and minimum values to your resources, so that you only use the resources your applications need. This is real hardware virtualization, meaning better performance from lower requirements on the hypervisor. 100% of the RAM and disk resources are dedicated to one individual user. KVM provides a more isolated environment and gives users their own kernel.