Only a guess but I think ARM like POWER has weak memory consistency so
maybe some sync ops are needed between writes somewhere whereas it would
work on X86_64 that has strong guarantees so no such explicit sync is
needed? I may completely wrong though, it's just what this reminded me of.
I didn't think this should matter for MMIO, which causes a VM exit instead of a memory write.
The x86-64 and aarch64 binaries of Apple's PVG framework clearly diverge in a number of ways. (For one, the x86-64 binary completely lacks the IOSurface mapper sub-device used by Virtualization.framework and the vmapple variant of the code here.) So I think the reason is more likely down to implementation details in Apple's framework.