We're using Puppet to manage the Continuous Integration system, because it's a system. We're using Jenkins to manage our configuration management code, because it's code. This is why we'll build Jenkins with Puppet, and then check our Puppet code into Jenkins.