I've never used puppet before, but in an EC2 context, I'm puzzled about why one would want to use on-the-fly configuration instead of fully setting up AMIs to serve specific roles.
At first blush, future-proofing against lower-level AMI changes and maintaining instance role flexibility don't seem like a good tradeoff against increased startup time in most cases.