I don't see why the visible image would change?
Without changing the size of a sprite, I see 3 options, let's see what can happen for a 9 pixels width sprite,topleft, (0,0) :
A The pivot of a sprite is always an int
Then when I press pivotcenter, the pivot is 5 (rounding of 4.5) and x of the sprite is 5, rotations may be weird (but no more that the current implementation).
B The pivot of a sprite can be 0.5
Then the position of the pivot is now 4.5 and x too. Then the "pixelperfect" scripts must be aware that pixelperfect doesn't mean all coord have to be int.
C The pivot of a sprite is a float, the user may lose pixelperfect when centering
Same as before, when I press center, the pivot is 4.5, the position too.
Now if I put theses sprites on an anchor center and reset x to 0.
A: nothing change, the sprite is a bit offcenter to the left.
B: the mesh of the sprite must be "pixelperfected" during the fill
C: the sprite is blurry (Unless I press MakePixelPerfect which will set x to -0.5)
I'm aware this oddsized sprite is a big problem and theses solution might not be the best. I feel that the current implementation is a bit worth because changing the sprite size creates a lot of troubles. If you say that the best solution is "don't use oddsized sprites", IMHO it's the sign that the current implementation can be improved.