it's a problem most slicers have and it's well documented. I personally prefer to drill my holes after printing but that's not the point of this topic I'd say.
The basic compensation table (not ideal but great starting point) is made by Adrian and is available on reprap's wiki:
More in-depth analysis is done by Chris and I suggest you read his post if you are interested in the problem:
Something not directly related but related from Chris:
http://hydraraptor.blogspot.com/2014/06 ... wrong.html
I assume that the problem is "solvable" since Chris made a patch for skeinforge that prints holes at perfect size, how he solved it is still unclear as one can find mention of the solution on number of places but few have seen his code.
Fighting with printers for a while I'd like to emphasis the Chris's "corner cutting" description. This makes for most of issues on my prints with regards to round holes. Square holes I get perfectly precise but round ones are always small.
When filament is dragged round a corner it likes to take a short-cut. This depends on how elastic the filament is and how much it is being stretched. I think when the nozzle moves in a circle the filament is continually trying to cut the corner and ends up forming a smaller diameter circle. I think this is the dominant effect on my machines.
As for the "why fixing it in design is bad idea" I also agree with Chris:
Ideally all these effects should be compensated for in the slicing software but what has happened instead recently is that people are using parametric values in OpenScad to tweak the holes to come out right on their machines. That is the wrong approach because when the holes comes out smaller than they should be, without the slicing software compensating for it, then the infill doesn't meet it as tightly as it should do.
Also - seriously important thing to understand is:
When I started printing Prusa Mendel parts I found the values in the configuration file far too big. I have also noticed this when downloading some designs from Thingiverse. That implies that my holes shrink less than a lot of other peoples, which is odd because all the effects above don't depend on the machine, apart from segment pausing.
From this one should easily conclude that there's no "all round solution" and that slicer should have a whole "plugin" that handles this issue with a whole set of configurable parameters so one can properly configure and calibrate this for specific machine. Unfortunately none of the slicers I ever had a chance to work with (apart from stretch plugin in skeinforge that was just a very basic attempt to fix this) had this done properly. Expecting Simplify3D to raise to the challenge, well, I'd certainly be impressed if they do, but I don't "hold my horses"