* systemd tries to solve a complicated problem
* systemd has a lot of complexity
* some of that complexity seems unnecessary
* parsing is hard (see DJB). Parsing (as systemd does) in PID 1 is bad. Complex systems in PID 1 is bad.
* systemd manages states and dependencies (this is good)
* some of the states are only internal, and can't be serialized to storage. The result is indeterminism and race conditions. (This is bad)
* as a result of the above point, systemd behavior is hard to debug, and hard to understand
* another result (not stated explicitly) is that systemd allows for (and apparently can't detect) ordering cycles and dependency cycles.
* The configuration files are simple for simple tasks (good), but not complex enough for complex tasks (bad)
... etc.
i.e. systemd is an engineering solution. It pretty much works, but it has inherent design / implementation issues which cause real-world problems.