My best guess would be that the acc/dec rate of the Z servo is constant. When you change spindle rpm, the feedrate increases proportionately for threading at the higher rpm, however, the servo still cannot accelerate any faster than it did before, and it has to accelerate for longer to get to a higher feedrate.
A certain number of cpu cycles is required to detect the encoder index, and to initiate motion. Since the time delay between detection and motion is fixed, it seems reasonable to assume that a faster running spindle has managed to turn a little bit further than it did previously, before the servo gets up to higher speed at the faster rpm. This amounts to a change in timing.
First you get good, then you get fast. Then grouchiness sets in.
(Note: The opinions expressed in this post are my own and are not necessarily those of CNCzone and its management)