Agreed, I'd say it's first on the system that isn't handling exiting/shutdown cleanly, and secondly on the distro config timeout value. I get this quite a bit on some machines (I use Fedora) and it is super annoying. I have yet to find which service is resonsible though as anytime I'm shutting the system down is inherently not a good time for debugging :-)
It always encounters some service to hang to where systemd responds:
"Waiting for service to halt - xx / 2m"
I've never not encountered that experience.