That being said, if your goal is to develop in an environment more like your production system(s), you're going to need to work out your automated deployment model sooner than later, anyway. You may as well do it locally, where the cost of a screw-up deployment is effectively nil.
It's a bit slow and has some quirks with huge projects, so I stopped doing it, personally. Mounting with ExpanDrive or MacFuse(SSH) were slower when I tried.
Although nowadays, I'm finding the 'separate VM & host os" for development a bit tedious. Even executing that script to see code changes vs. just saving the file and seeing it right away is a drain on productivity. And doing remote editing put's a noticeable lag to my editing.
Lisp development in Emacs supports this setup.
That way, the only direct interaction I have with the VM is to to click "revert to snapshot" whenever I mess it up.