This is because of the micro offsets that the move and resize tools add onto objects. The only way to combat it is to, like you said, over-size the parts.
What ChipioIndustries wrote is accurate. Small roundoff errors emerge in the transformation tools, and the outcome is unfortunate cases like this. The workaround you came up with is the best one we can offer at this point.
We are looking for ways to address this, but we haven’t found a satisfactory solution to this within our existing object transformation framework.
I guess you’re all talking about Floating Point.
I made a tutorial that helps fixining the numbers.
@linearcomplex Have you thought about snapping the part to match the other surface/vertice/edge if the part is off-set on around 0.000xxx of the increment? Is it possible to do?