Wireguard is great with moving clients, as soon as it gets first packet from new address:port, it immediatelly switches peer’s endpoint to it. I tried tunnel from dual-WAN router to remote server, kept the ping running inside it and made each outgoing packet use random WAN:
/ip firewall mangle
add chain=output protocol=udp src-port=<local WG port> random=50 action=mark-routing new-routing-mark=isp2
And guess what, ping had 0% packet loss. Try to do that with different kind of VPN
So it should work for you too. Check if client sends anything to router, using either packet sniffer or logging rule like:
/ip firewall mangle
add chain=prerouting protocol=udp dst-port=<server's WG port> action=log