I've never used Chef, with or without Vagrant, but I have used Puppet.
It's generally better to have a shell script install your provisioning tool, or use a box that already has it installed, than depending on Vagrant to do anything for you.
Here's a simple example: https://github.com/puphpet/puphpet/blob/master/archive/puphp...