There is no real solution to this.
KiCad uses 32 bit integers (with nanometer resolution) for it’s internal coordinates and rotatioins generate floating point numbers, which mean you will always get rounding errors.
2 weeks ago this issue was also relevant in this thread:
Maybe it could work if there was a function or script to round coordinates to some multiple of 10nm or 100nm. If that’s done in the “normal” position every now and then, it could reset those accumulated errors before they grow too big. But I am not aware of a plugin or script that can do this.
A manual way to do this is to set your grid to for example 0.01mm, and then drag each footprint around a bit so it snaps to the grid, but this is tedious and far from ideal.
So currently the only way is to not rotate the PCB at all and use another workflow.
Are you aware of the “Place Footprints” plugin?