Hi Nik, I realize this is a very old thread, but handling state and UIDs during large-scale migrations (like 2500+ users) is still a common headache today.
While dsync is incredibly powerful, configuring it to perfectly maintain both IMAP and POP3 state simultaneously via CLI can sometimes lead to the exact client re-downloading issues you experienced. For anyone currently tackling a massive Courier to Dovecot migration and wanting to avoid script troubleshooting, you might want to look into the SysTools IMAP Migration Tool.
Instead of running complex synchronized commands, it allows you to map source and destination servers, import your user list in bulk, and run concurrent migrations through a GUI. It manages the folder hierarchy and server handshake automatically, which saves a massive amount of time on 250GB+ migrations.