Let me start backwards...
It seems that lines 467 and 468 in UISprite.cs (which look like "if ((x & 1) == 1) ++x;" and "if ((x & y) == 1) ++y;") are sometimes causing the behavior that the logic exists to prevent. In this case, I am using a pixel size of 0.5 and sprites with dimensions that are multiples of 2 (and should not require the extra padded pixel).
The atlas entry is 178x206 original size, so with the atlas at 0.5 pixels the UISprite ends up with a dimension of 89x103. There is no center-based anchoring going on. However, due to the logic in the above mentioned lines, this Sprite's dimensions are being snapped to 90x104 - which is 1% too large and causing it to become non-pixel-perfect when previously it actually was pixel perfect (at 89x103).
I do understand the intent for the original ++x ++y logic, but I think there is some further logic that is missing to prevent it from taking effect in cases like mine and actually breaking the pixel perfect state. When I comment the two lines out, everything looks great again since the dimensions remain unchanged.
In the screenshot you will see that with the bug taking effect, the sprite has an extra column of sprites on the right side which doesn't look too noticeable. However, sometimes it manifests as a "crack" right in the middle of the sprite and can look pretty bad with mixed with sprites that have clean line art.