Hi,
I finally found the solution. NDSolve only guarantees the precision at the points where the solution is computed (which you don't really now expect if you inspect the interpolation object). A linear interpolation is made in between the points is made if no option is given. Therefore, the precision at some points could be much larger than the expected precision.
In order to have something better than a linear approximation, one should use the option InterpolationOrder->All . The precision seems to be the expected one everywhere on the interval. This is very misleading and it is strange that the option is not the default one.