Assuming you have the figure handle, how about something like this?
f = figure;
for idx = 1:8
ax = subplot(4,2,idx);
clear idx ax
N = 2;
f2 = figure;
referenceAx = axes(f2, 'Visible', 'off');
newAx = copyobj(f.Children(end+1-N), f2);
newAx.Position = referenceAx.Position;
Maybe creating the invisible temporary axes is unnecessary, just seemed like an easy way to get the default size. Of course you don't have to reposition the axes at all if you don't want. Or an alternative would be to copy each child of axes #2 to the new set of axes.