Of course, Google now has virtualization (GCE) because some customers demanded it, but if GAE already works there's no reason to redesign it.
This post is accurate. AppEngine-the-PAAS uses containerization for resource control and as a security layer on top of the (J)VM security.
GAE-the-EC2 competitor uses virtualization to segment machines. The Google Docker offering uses Docker containers, and segments each customer into a VM.
This incident demonstrates the need for it.
Additionally it isn't really redundant. AppEngine supports Python and Go as well as Java, and it makes sense to have a common isolation infrastructure.
If you are not getting money when the app is not performing tasks, you need to minimize the costs related to that state. Two ways to minimize the costs: 1)put as many apps as possible to singe machine 2)implement a fast mechanism for loading/unloading the apps based on demand.
Xen like virtualization is not best choice for this purpose. Virtual machines have overhead which limits on how many of those you can put on one server. Even if the app running on VM does nothing, you still have the overhead. Also starting up the VM takes time so reacting to demand is slower. At least the original GAE would quite often shutdown the application completely and only start it when a new web request came in.