Hmmm....same symptoms here, indeed. I can only conjecture something's different in the way the two were manipulated prior to saving -- like the positions of the axes were modified just enough to cause a floating point mismatch in the size comparison inside subplot() when it opens the one that thinks it's not the same position as the first.
I see two workarounds --
a) Find out what actually is causing the above symptom -- I'd start by using the default positions for subplot() and make the one that fails again and look at the position vector there and compare that to that of the saved version... or,
b) Load the figures and then use the handles to the axes objects directly -- I think it will depend on how they were created as to the order but in the one that failed the two plot axes object handles are the 2nd and 4th and the legends are the 1st and 3rd...
hfig=hgload('fig1.fig'); hax=get(hfig,'children'); xlabel(hax(2),'new label 1') xlabel(hax(4),'other new label')
works as expected here while I do see the problem you outline on the subplot() open not recognizing the existing axis should seemingly match.