I just responded to a customer's question about our hosting, and figured to share the response here as it includes a good description (in my opinion) of shared and VPS hosting:
Shared hosting (where customers have direct access to virtual hosts) is tough because one customer might have a poorly written script that consumes unnecessary system resources. Most affordable hosts are shared, and most of the time its not a problem, but with every shared host I've ever worked with there always has been a problem.
On the flip side, virtual private hosting can fix that with by limiting resources to each clients share of a server, without needing to have each client on a separate server - few websites have a need for that. Still though, vps has its problems too, because each vps to be a real vps needs a publicly routable IP address.