People all the time complain about systemd bloat, but it's very likely that in those languages it would be far worse.
1. makes very common usecases needlessly hard for beginners (e.g. run something on boot)
2. is sometimes the opposite of self explainatory
I use systemd and am OK with it and I aggree with the problems it is trying to solve. It is just a bit convoluted and intransparent even after years of using it.
And if you just want to start a gui, Gnome Tweaks has a page which is super simple.
Ah yes, systemd unit files are well regarded as far more complex than shell scripts that are 99% boilerplate. /s
Actually, unit files are possibly the only part of SystemD that I've knowingly interacted with - I know it does about a thousand things, but whatever those other things are, they are transparent to me as a user.
The biggest problem I remember now is that when testing your init script it picks up environment variables from your root shell. So, because of that it works when it shouldn't, and realizing what's missing is a big debugging nightmare. The systemd init starts every unit in the same environment.
Another one that resulted in hours of fun fixing it is init scripts happily starting services even when various filesystems failed to mount. Like /var. Getting those particular database files back in sync after the / filesystem filled up was a nightmare.
Systemd has pretty good documentation and I think it is a feature that its users are pushed to read it, rather than hacking out a shell script that doesn't use half the already existing functions because the author never bothered to read RedHat or Debian docs.
...the 90s. So it's too late to change them. We should definitely be considering safer languages in 2021.