Earlier quoted context omitted.
One of the main problems was the speed with which systemd was rolled out on all the major Linux distros, despite it being relatively immature and very controversial at that. The second major issue is it growing way out of the bounds of being just an init replacement, thereby violating the so-called Unix Philosophy of doing one-thing well. For a user app to do that is one thing, but for a core OS component to do that…
All that may be true. But I prefer today writing a little file that is a systemd service than fixing up someone else's init scripts. If it is as broken as you say why was it adopted?
The BSDs have really straightforward to maintain init scripts. Mainly because all the boilerplate junk is hidden in sourced-in files. Runit takes a more advanced approach, but its service files are still simple scripts a few lines long. We don't need a reinvent-the-world solution like systemd to address the most complained about problems with init.