Você pode tentar isso como seu arquivo de serviço.
[Unit]
After=wpa_supplicant.service dbus.service NetworkManager.service
Requires=wpa_supplicant.service dbus.service NetworkManager.service
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=MyShutdownExecutable
[Install]
WantedBy=multi-user.target
Eu consegui executar meu script com isso - a conexão sem fio estava sendo destruída pelo suplicante wpa e pelo dbus, mesmo que o NetworkManager ainda estivesse em execução.