One of the reasons has always been that it was unclear how to get the changes of projects like Linux-VServer and OpenVZ into the kernel and they are actively working on getting those changes into the kernel in the form of Linux Containers. And many things already are in the kernel. So it isn't so much out-of-tree anymore.
I keep wondering what lxc is still missing that not more people are moving to lxc instead of OpenVZ and Linux-VServer.
Is it just some kind of migration-tooling ? Or some host-migration-tooling, I think OpenVZ has the ability to stop a container and move it over to an other machine, but the mainline kernel does not yet have that.
Or is it just that not all userspace tooling has been created/needs more documentation ?