Our arrays are somewhat older so thin provisioning isn't an option on the LUN side. We could do it on vSphere but haven't bothered as we've gone a different route.
We were using a small number of large data stores, each containing multiple VM's but found that we were getting strange IO errors when more than one VM in a datastore engaged in a high-IO activity at the same time - I had been told by a VMware trainer while on a course that VMware can and does lock datastores when writing. This isn't a problem if you only have one VM in a datastore, or if the VMs aren't attempting to write at exactly the same time. It does become a problem when you have two or more VMs trying to do intensive IO activities at the same time.
We went down the route of assigning at least two individual datastores to every VM, one for the O/S and one for data. Some of our bigger VMs have 4 or even 5 individual datastores. Let me stress - we are a small environment with less than fifty VM's currently so this approach is manageable for us... I can't see it being workable for environments with hundreds of VMs.
Just thought I'd share!
Keep Up with TechRepublic