Regarding XML, I greatly prefer (vs. XML or JSON) classic NeXT-style property lists, though sadly Apple deprecated those (GNUstep did not however.) In practice I tend to use an editor.
YMMV - as I mentioned, I think launchd, systemd, and windows service manager are in a similar space; it could be I just encountered launchd first, so I'm more comfortable with it. Also the transition to systemd on Linux (e.g. rc files to upstart to systemd) felt more jarring than the macOS launchd transition.
XML definitions for service startup and inconsistent switches. Launchd is worse than systemd in those regards. I was quite happy to let go of my work iMac and do development on Linux.