It is complicated.
Generally, what is happening, the driver reduces the current step by step, and while it is happening, the rotor slowly deviates from its current position.
The position is determined by the current in both coils with hysteresis/friction lag.
The more torque/current you have, the less hysteresis/friction lag is noticeable.
Think about it like there are springs (magnetic springs) and you make them loose, while they are under load.
With XY, it depends on the printer; it can be a problem. With Z it is complicated and depends on how it is implemented.
For example, if you have a lead screw T8x8, it can self-rotate under load if the motor is unpowered, because of the lead angle. When you reduce the current, it does rotate a little because the motor has less torque now.
With Voron-style belts, it would be similar because the weight of the portal would try to spin the motor shaft.
So, in the case of Z, it would generally look like there is an inconsistency in layer heights.
It can be overcome if there is a sort of closed loop that will correct for this.
Or there is a really HIGH gear ratio, like for T8x2 where the bed would move only by 2 mm per rotation. IDK, if it would help, but the effect should be less noticeable.
Hope that helps.
JFYI:
- Can allow to monitor how the current is changed Sensorless/Stallguard WebUI graph tool, would work for SPI drivers.
- Reduction when the printer is idle: RFC: tmc: Implement ready state current reduction by nefelim4ag · Pull Request #6988 · Klipper3d/klipper · GitHub