I'm confused by your units. Is 0.0123 (the threshold) in percent? That is, a fractional change of 1.23 * 10
-4? That isn't much to worry about.
The reason is probably that the calculations are carried out in a different order in different runs, so that the roundoff errors accumulate differently. And then the optimizer will stop at slightly different points in each stage (patch and level), and so the small changes will accumulate to some extent.