This seems to do the trick...
msiexec /update MyPatch.msp /q REINSTALLMODE=AREINSTALLMODE=AMUS
However, it does take a lot longer to run, and if I create a log it shows to attempting to update every single file in the project...
This would seem to be the brute-force approach, but doesn't answer my original question about why it doesn't just work normally. If I use OMUS (the default) I get the behaviour in the question... But my new version and date of the file is definitely later than the already installed one.
(according to the docs... https://learn.microsoft.com/en-us/windows/win32/msi/reinstallmode the A forces all files to be installed, whereas O is to install only if the existing file is older)