Yes. That blog post is a pretty good description of the issue. If you control the application, and never launch a subprocess, it isn’t an issue; you can, with some care, reap zombies yourself as well.
True, but options like -p and -e are all but required for standard use too. I’d think documenting --init as a recommended startup option is a reasonable answer.
You can presumably install a lightweight init whatever other base image you’re using. The tini home page you linked has instructions on how to do it. The widely-used supervisord process manager, I’m guessing, will also pick up after unexpected child processes, though their documentation doesn’t seem to explicitly say that. BusyBox has an underdocumented init too which might do what you need.