Sway can more or less do it, and I've switched from XMonad to Sway but configured similar to XMonad's default method of operation.
I haven't managed to get it quite right though. For example Sway doesn't seem to be willing to move a workspace to a different monitor if it is empty.