We've got a mixed team of Ubuntu/Macosecks people, and _nobody_ does actual development work on OS X any more. It's a lot more convenient if your development environment matches your deployment environment. Working otherwise is swimming upstream.
Requiring an exact match between deployment and development is swimming upstream, as you'll quickly introduce unintentional dependencies on specific facets of your host OS.
Plus, having to use VMs for development is even worse, why slow yourself down with non-native tooling?
The way you phrase this makes it a pain to debate, to I'll try saying it a different way first. You give two reasons for not developing inside VMs:
* It forces you to deal with different configurations, which results in being able to move between systems more easily.
* It's slow.
The problem with your argument about dependencies is it invites distraction. The cross-environment difficulties don't happen when you control; they happen on their own schedule. The proper way to make sure things are portable is to have a process for it.
As for the performance thing, that may or may not be an issue. It's not wise to just assume it's going to be an issue. Usually a VM is fast enough for development.
http://vagrantup.com/
It makes VMs free and easier. It uses VirtualBox, an open source VM environment.