That sounds like it would be the expected behavior when running that on an already correctly working system. Removing half the frame sync calls when the GPU utilization is above 50% would make it max out (and per the spec the OpenXR runtime would drop every other frame you submit since they haven’t been waited for).
If you are seeing xrWaitFrame waiting longer after missing frame targets, it’s most likely an intentional feature of the runtime throttling the application back in order to better do ASW/motion smoothing. If or when it throttles is entirely up to the individual HMD vendors runtimes.