The advantage is how easy it is to create a new VM under vagrant, just entering a few commands vs going through an OS install process. Also most of the boxes are created with development in mind, so having a shared folder created automatically and a passwordless SSH login is a timesaver.
If you wanted a significantly divergent configuration from the base config you could just create a new box and puppet manifest. That way you can distribute your configuration to other developers if required.
You shouldn't need to customize the VM that much beyond installing tools required for the project, because the idea is that you still run most of your user-facing tools on the host OS.
Is there a particular use-case for Vagrant where i) I already setup my VM environment ii) Not much sharing or duplication of the VM environment is necessary iii) I actually code within the VM, not just as production/testing environment
It's like a system-wide virtualenv.