The pattern you describe — some folders, some users — points strongly at a migration pass that was re-run over mailboxes that had already partially transferred, using a tool that decides what to skip based on position rather than content.
Here is the mechanism. A naive migration tracks progress with a cursor: 'I copied the first 4,000 messages in this folder.' If the run is interrupted and restarted, and the folder's ordering has shifted — because new mail arrived, or because the server returns items in a different sequence — that cursor no longer points where it did. Everything after the drift gets copied a second time. Folders that finished cleanly the first time are unaffected, which is exactly why only some folders show duplicates.
The correct approach is content fingerprinting: before writing any message, compute a fingerprint from its stable properties — Message-ID, sender, timestamp, subject, size — and check whether that fingerprint already exists at the destination. If it does, skip it. This makes the migration idempotent. You can run it five times and the mailbox is identical to running it once, which is precisely the property you want when a run gets interrupted.