You have a pretty good argument about SystemD here, and I want to use it to highlight why I consider systemD especially bad, as software goes.
- It breaks expectations of experienced Unix/Linux users. Where somebody was accustomed to interact with the system a certain way, e.g. having console logging and log files available to cat/grep/etc, systemD changes that. Programs should be designed for human usage - if it breaks already established human interfaces, it drives up the learning curve, and that is bad. We are overstressed with too much information as it is.
- Non-deterministic. If reordering the startup daemons breaks the system, systemD is at fault. You're saying that it's my fault for having broken systemD configuration. I want to remind you that a program should help me out, not raise barriers for me. If I write a configuration, test it, verifies that it works, and then two weeks later it refuses to work, nothing changed, this is horrible design - how was I even supposed to know it will break ? When I test a program, get to run through inputs and verify the results, I don't want unexpected surprises with the program changing behaviour without me telling it to do so.
I'm not going into technical merits here. I am talking as a human interacting with a machine - the behaviour of the systemD-driven machine is horrible.
Would you even drive a car that randomly speeds up a bit before breaking when you hit the breaks, because it thought it would get me a bit faster to my destination ? KISS is a principle because experience shows that simpler things work better.