Saving matrix field of a duplicate of an entry not working
This sounds suspiciously like a bug that was fixed in today's Craft 3.6.10 release.

Fixed a bug where entries could return the wrong Matrix/Neo/Super Table blocks if the blocks were queried immediately after the entry was created via craft\services\Elements::duplicateElement().

My guess is if you update to that release, it'll behave like you expect now.