The client is given an XConfigureEvent when it is moved and can compare it against the monitor's bounding boxes (which it caches in between xrandr change notifications) and rescale itself.
Doesn't work with legacy applications... but neither does Wayland so you aren't really behind.