Why does numpy.savez() output non reproducible files?
There is an github-issue about this here:
savez() is not deterministic #9439
which seems to boil down to Zip files attaching timestamps to files (as you guessed) in combination with the usage of temporary-files.
Workarounds are discussed too, but it seems this issue is still open (although Python>=3.6.0 might be unaffected now (which again seems to be observed by you)).