You'd be a bad script writer for using #!/bin/bash. Most OSes (outside of Linux) won't have bash under /bin/. All the *BSDs will be /usr/local/bin/bash. Sadly, I haven't seen a consistent location for env (/bin or /usr/bin ?) either, so you're at best 50/50 there.
I've found env is most commonly found in /usr/bin/env and as such #!/usr/bin/env bash is a fair attempt at a constant hashbang, but as you've indicated yourself; if you really need to write a script and deploy it to random target OS'es, you'll probably want to customize the hashbang for each to point at wherever you've got or decided to put bash in it. It's not such a major undertaking.
My point in short, changing the hash bang in a script is trivial. Replacing all bash'isms is NOT. "Porting" to a system with only ksh, perhaps where bash won't compile, can be trivial, or a nightmare, all for the sake of a few features that are just as easy to use in a more compatible way, rather than the bash way...
Writing bash code by using often broken pure-POSIX equivalent solutions just because it'll mean you'll have it easier in a few years from now if you were silly enough to consider changing the language of your script to POSIX without rewriting it is going to give you bad bash code now and bad POSIX code later. If your needs require you deploying to targets where bash is really unavailable (it rarely happens that you can't even install it), then either write specific code for those targets in ksh (or heck, perl?) or suffer restricting yourself to POSIX. In the latter case, use /bin/sh as your hashbang. Changing a hashbang from bash to something else is always silly: Either you made the wrong choice of language initially and you should rewrite your code for the new language or you made the wrong choice of hashbang initially and you should never have put a bash hashbang in your POSIX-code. Writing C++ code in a C way because maybe you'll decide to switch back to C at some point is equally dim.
printf to ed, nested inside a find, awkwardly escaped, incidentally with poor performance (one file at a time)
The FAQ does its best to offer all the alternatives. This is indeed a convoluted method, but there is no portable alternative. GNU sed comes with a -i and BSD sed comes with a -i, both work differently, and neither is "standard" (and indeed, neither handle symlinked files well), ed is. I'm not sure what you're implying here, but if you were trying to make a case for sed's -i, it would utterly defeat your case for portable shell code in bash scripts. Non-interactively editing files is a difficult thing to do right, even more so if you want it to be "standard" or portable. You can't get a simple one-liner for everything. In this particular case, it would be better to iterate find's results with a while read loop and do non-escaped ed'ing inside, IMHO.
Or perhaps see the recommendation to "never, ever use seq". Even though "sed -w" will automatically give you the right number of leading zeros
Your shell can do math just fine, no, you really shouldn't be forking for it. And you really shouldn't be putting leading zeros in your variables: your data should always be pure and normal. You can format it appropriately when you use it (eg. with printf).
Frankly, if you think you need bash'isms to write reliable shell scripts, you need to expand your horizons greatly
What would you recommend? Your own arguments defeat ksh for the same reason they defeat bash, which leaves only POSIX sh, and no, you cannot write resilient code in POSIX sh, unless it involves no more than simple delegation. To be resilient in POSIX sh you need to abuse positional parameters for arrays or do nasty and convoluted eval hacks to basically write your own shell features. Thanks, but no thanks.