how does this compare to puppet?
It sets up openstack from source, tracking master.
It is what developers of openstack use to setup dev environments, run automated testing, ... There are also puppet and chef recipes that use packages (which is recommended for production deploys)
From the first line of the script: "stack.sh is an opinionated OpenStack developer installation". It doesn't provide nearly the flexibility of Puppet (or Chef).
Devstack does one thing, and one thing (almost) only: get a simple installation of OpenStack up and running as fast as possible (predominantly for developers to test their modifications against).
Puppet can handle much more complex scenarios, and is really meant to deploy production.