I probably discovered why this happens. The WM_DELETE_WINDOW command is being received with success, I tested it.
The issue is that the command xmonad uses to spawn st double-forks the process, making the SIGHUP signal not being sent to the correct pid. See [1]. So the question remains if we should cover this case or not, since xmonad's approach is probably nonsense. I never experienced this with other applications though. [1]: http://xmonad.org/xmonad-docs/xmonad/src/XMonad-Core.html#spawn