The rumors you've heard are true: robots are repetitive, but not precise.
In any Brand you can get more precise robots by paying a little bit more (high accuracy, absolute accuracy...) those “ultra-precise” robots can get typically precisions of 0.3mm (this is the best you can get and the bigger the robot is the worst precision you’ll get).
Due to the specific construction shape of the robot which all the axis are rotary, the robot can't be more precise than that.
There are external companies that calibrate robots. They are expensive and keep in mind that you won’t get better results than 0.3mm.
When you teach the points, you are "solving" the precision issue automatically as the robot don't mind if the real position versus the software position are correct/equal.
Anyway, I must tell you that with KUKA I've got very good results with normal robots. i.e. it's quite normal to program a robot in our factory and send it to our customer and need to retouch a lot of points to adjust the part program. With KUKA this has been minimized a lot.
Don't think on a constant formula to solve the error issue, the amount of error is not constant in the space as it depends completely on the robot gearboxes and arm torsions, which change depending on their position.
If you need a lot of precision teach is the best, in the other hand, you can always use a correction array in which you can allow the user to apply a correction in a specific array position and before making any movement add the user correction to the calculated point:
calcpoint [x] = calpoint[x] + userarray[x]
If userarray is 0 then no addition will be performed and so…
Anyway, test it and take measurements, probably you won't need this amount of precision.
Good luck!