I always like this approach for dangerous (almost anything which messes with files is dangerous ;) ) scripts: output the commands it would execute, but don't execute them. The user can eyeball them and check that those commands are what he wants and copies them into a shell toe xecute them.
I almost exclusively use bash. Not because of a particular love of bash, but just because that's the default install on Linux (and even OSX). Consequently, I don't know what the real differences are between bash and other shells.
It's possible the author is like me: because he's not familiar with what the differences between the shells are, he can't say what does and does not apply to other shells.
* zsh has a ton of interactive chrome built-in, and a lot of it is on by default.
This leads to some incompatibility with bash for scripting purposes
the contextual completion stuff is infuriating when it's overly restrictive
* A pure bourne shell (like dash) by nature doesn't support bashisms
like $() as an alternative to ``
On almost all gnu systems /bin/sh is a link to bash
which checks $0 and operates in sh mode
Unfortunately bash's sh mode is completely broken
it allows most bash-specific syntax
so almost a lot of Linux users's #!/bin/sh scripts really need bash
The takeaway is that you should give up and use bash, or write your own shell if you're an asshole (I have done this).