I'm unsure how exactly chef does its thing, but I found that using puppet apply (similar to Chef Solo), was far superior to using puppet server (which we use for production).
Maintaining usable certificates, sharing them with other devs, synchronising puppet plugins etc was just far too much work, and very time consuming. I also found it a lot nicer to have the explicit puppet configuration right next to the code that runs on it.
I don't know if these kind of setbacks will be similar with Chef Server or not.