just FYI, aptitude can identify the dependency chain between two packages. I don't know if it always finds the shortest chain, the most direct chain (choosing Depends over Recommends over Suggests), or just any chain, but on this machine (Ubuntu Xenial, the only one I can access right now):
$ aptitude why network-manager systemd
p network-manager Depends libpam-systemd
i libpam-systemd Depends systemd (= 229-4ubuntu21.29)
$ aptitude why dbus systemd
i dbus Depends adduser
i adduser Depends debconf | debconf-2.0
i debconf Recommends apt-utils (>= 0.5.1)
i apt-utils Depends apt (= 1.2.32ubuntu0.1)
i apt Depends gnupg | gnupg2
i gnupg2 Depends gnupg-agent (= 2.1.11-6ubuntu2.1)
i gnupg-agent Depends pinentry-curses | pinentry
p pinentry-gnome3 Provides pinentry
p pinentry-gnome3 Depends libgtk-3-0 (>= 3.0.0)
p libgtk-3-0 Depends libcolord2 (>= 0.1.10)
p libcolord2 Recommends colord
p colord Depends policykit-1 (>= 0.103)
i policykit-1 Depends libpam-systemd
i libpam-systemd Depends systemd (= 229-4ubuntu21.29)
So yes, network-manager does seem to have a hard dependency on systemd, but dbus doesn't. Though I'm curious why network-manager should hard-depend on libpam...
It's an optional dependency, which you activate at compilation time with `./configure --enable-systemd`. So on systems where users don't control build flags, D-Bus dependency on systemd is a decision made by maintainer.
That doesn't seem to be the case, the dbus package only depends on libsystemd0 and installing dbus in a clean chroot doesn't pull in systemd.