It usually comes down to personal preference.
Many Puppet advocates claim Chef is simply a Ruby DSL wrapping shell script execution. I don't argue with that point, but I preferred Chef (chef-solo to be exact) because it was pretty easy to find open-source cookbooks to install the packages I needed.
Puppet is powerful in its own right, and my in interpretation, it seemed to closely model an object-like structure. But I was able to get up and going with Chef pretty easily so I took path of lease resistance.
For standing up a single simple development VM, Chef was good enough for me and does everything I've needed it to do.
John Kary