imapsync solves exactly one problem and solves it well: it synchronises two IMAP mailboxes, checking what the destination already has and copying only what is missing. Hence its best property — a repeat run creates no duplicates and costs almost nothing.
The awkwardness starts at installation. It is a Perl script with dozens of dependencies; on Linux a package manager handles it, on macOS with caveats, and on Windows it has always been rough: there is no official build, and the ones floating around were assembled by someone from something.
The second half is the command itself. imapsync has well over a hundred options, and a typical migration is an eight-line invocation in which source and destination are easy to swap by accident.