Why Puppet is Intrinsically Better Than Chef
Two words: it's declarative.
Longer answer: Puppet lets you specify what configuration you want without worrying about how to get it. In that way, it is similar to SQL (where you specify what data to retrieve) or Nagios (where you specify what you want to monitor on the network). This is a higher level of abstraction than a procedural language like Chef -- kind of like saying, "Climb that mountain" without concerning yourself with the details of what approach to take, what gear to bring, etc. (Matter of fact, Chef might make a dandy implementation language for a Puppet clone.)
As someone who has programmed professionally in languages ranging from assembly to Perl, Java, and PHP, dealing with excessive details are a killer in getting projects done fast and done right. You could program a complete implementation of PREMIS metadata in assembly -- but you wouldn't want to. (Or at least, most of us wouldn't.) Most of the time, we developers care mainly about our programming tasks, not the specifics of how you configured your test system(s). Puppet -- unlike Chef -- removes the burden of those specifics from you. Just as a high-level language lets you think in terms of iterating over a set of patients rather than concerning yourself with register allocations, stack management, and so on (the kind of fiddly little details computers excel at handling), Puppet lets you say "what" is to be configured without having to spend skull sweat on the "how".
Does this mean Puppet is without problems? Heck no. (Repeat after me, "There is no silver bullet. There is no silver bullet. There is no silver bullet.") If there are bugs in Puppet (and as a non-trivial program, it will have bugs), you may not end up with the exact configuration you desired. Additionally, Puppet does not encompass the whole universe of software, so you may need to write some software to help Puppet create the configuration you want. (As Puppet is Open Source, if you wish to you can enhance Puppet to do precisely what you need it to do.)
Now, I suspect a lot of system administrators are either thinking that I am preaching to the choir -- or that I'm full of pond water. And that's fine. If we were all little clones of each other (or even big clones of each other) we'd never create the incredible richness of our current software ecosystem. So try Puppet -- you just might like it.