Even in traditional manufacturing (milling, lathe, router, etc.) dimensions are often times offset to accommodate unforeseen variables such as cutting tool wear, material hardness, and especially operator/engineering error.
As Tom van der Zanden stated, it is common for holes to come out undersized. This is not a conscious action, but a result of uncompensated variables in the material. When you phase the material by heating it to near or at melting point, the material technically begins changing. With that can come varying changes in melting and cooling rates. Your slicing engine will not understand what should be compensated and what shouldn't.
So, I would suggest:
- Aiming for the lower tolerance for your hole size. If you don't have a tolerance, just make one up and aim for about 0.5mm-1mm below your target hole size.
- Ream the hole using a reamer or drill, utilizing the 3D printed hole as a pilot.
- Be wary of 3D hole positions. If a hole is oriented in compound angles, meaning that it is not directly in-line with an axis plane such as XY, XZ, or YZ, then you may also have misshapen holes. These may result in positional errors if you decide to ream them out.