Earlier quoted context omitted.
When you use a lot of contractor developers, being able to provision out devices for temporary work is powerful. A lot of time is spent provisioning machines, white listing ips, setting up VPNs, and getting the contractor to the point where they can work. In some cases I've seen it take 2 or 3 weeks to get a contractor up and running on a 6 month contract. Being able to give them credentials to a machine that's ready…
I absolutely hate using VMs over VPNs, any slight interruption in my fragile home Wi-Fi (or whatever the hell the VPN is doing) causes my whole dev environment to freeze. It's a security/usability trade off for me.
I work on a lot of systems with public and private facing endpoints and so I have a remote session running on a machine outside our network as well.
It works pretty well.