I have the following setup:
The following article concerns yet another CM tool (ansible), but I think the author does an excellent job of explaining the benefits of transitioning away from shell scripts.
http://devopsu.com/blog/ansible-vs-shell-scripts/
quote 1:
What really surprised me was the response from some of these more famous devs. They basically said, "This is really cool, but I probably won't read it since my manual-install/shell-script workflow is fine for now."
I was a little shocked, but once I thought about it for a few minutes, I realized that their choice was perfectly sane and rational given what they knew about CM tools.
quote 2:
For them, using a CM tool meant weeks of effort learning complex concepts, struggling with a complex installation process, and maintaining that complex system over time. They were somewhat aware of the benefits, but the costs of using a CM tool just seemed too high to make it worth the effort.
The benefits over shell scripts are summarized at the end and I think they apply to all CM tools, puppet, chef, salt, ansible...
Hope this helps.
Updated 2016
For those who found this through Google, it seems a bunch of developers are moving towards Ansible for the simplicity. From post:
"Ansible is the deployment tool for people who don't like deployment tools. It's close to scripting, doesn't pollute your servers with agents or centralized servers, and just makes immediate sense."
We implemented it recently in our microservice architecture and it's been awesome.
Puppet/chef always have a place in my heart / stack, but Ansible is just easier.