There's a lot of hate being tossed at systemd, much of which is not deserved (and a lot which is)
I recall the change from BSD to SysV startups and the hate which went with that. As with that, it's mostly just "different", but there are some fundamental boneheaded ways of handling things in systemd which need improving.
The big advantage of systemd is the change from singlethreading all the startups to parallelising things as much as possible - this speeds up desktop boots dramatically (not sure if there's much advantage on a server)
The single biggest disadvantage is the change from singlethreading all the startups to parallelising things as much as possible - if anything goes wrong it becomes much harder to debug AND the tendency to go into a boot loop instead of just stopping the sequence just makes things that much harder (a truely boneheaded decision if you ask me)