People talk about zsh being more advanced than Bash as if that's a good thing. But remember the shell is mostly useful as an interface to other programs; it's not supposed to be filled with features. Bash has way too many features, I think, for the same reason zsh does: people thought it was philosophically superior to rely on the shell having built-in features, rather than finding or developing composeable applications..
That is, ironically, one of the main reasons I decided to switch to fish instead of zsh — it’s even less compatible with bash. I’ll never be in a position where a script is subtly broken because it’s running in zsh instead of bash. Rather, it’ll just fail altogether and I can work from there.
> I’ll never be in a position where a script is subtly broken because it’s running in zsh instead of bash
I would set the hashbang to "#!/usr/bin/env bash" and then bail out if $BASH_VERSION isn't set on the first line, while also naming the script "foo.bash" (rather than foo.sh).
This way you can "enforce" a specific interpreter. Scripts using #!/bin/sh while relying on bash features was a common annoyance when I used FreeBSD – although it's probably less common now that some Linuxes have started using dash and /bin/sh. I don't mind if people use bash, but please make it explicit, especially because these types of errors are not necessarily obvious to the user.
It's not just about "more advanced", it's also about being less surprising and having fewer caveats. And besides, if you're going to add things like globbing in your shell then you might as well do it in such a way to make it much more useful for common operations.
If you want less surprising and fewer caveats, use a POSIX shell. There is nothing less surprising than a program using a standard that's older than you are.