This actually isn't quite the bug you've identified, although I'm surprised by the behavior:
The (automatically calculated, not manually set) exponent is determined by some automatic behavior, but MATLAB hasn't selected performed this behavior at the moment you're querying it. As a general rule, properties that - in the automatic mode - depend on things like limit picking should force the an update of the value when you query them, but this does not appear to be the case with exponent. If you report this to tech support I can try to improve this for future releases.
In the mean time, if you'd like to read the automatically calculated expoenent, a workaround is to call drawnow just before querying it:
ax = axes; % this should be the same for uiaxes, but I can't use it in the web version that ML Answers relies on
ax.XLim = [0 1e9];
sprintf("Incorrect Exponent %d",ax.XAxis.Exponent)
drawnow
sprintf("Correct Exponent %d",ax.XAxis.Exponent)