axTop and axBottom are overwritten in the first two loops. You need to keep track of each top and bottom axis for each figure. Something like this should do what you want.
axTopDict = {}
for leftSpec in LeftSpecList:
fig = mplt.figure(str(leftSpec))
axTop = fig.add_subplot( PageGrid[:5, :] )
axTop.plot(eval(leftSpec),'ro')
axTopDict[leftSpec] = axTop # associate this axis with this figure name
axBottomDict = {}
for rightSpec in RightSpecList:
fig = mplt.figure(str(rightSpec))
axBottom = fig.add_subplot( PageGrid[6:, :] )
axBottom.plot(eval(rightSpec),'b*')
axBottomDict[rightSpec] = axBottom # associate this axis with this figure name
LeftSpecListNew = ['Spec1', 'Spec2']
RightSpecListNew = ['Spec2', 'Spec3']
for leftSpec in LeftSpecList:
fig = mplt.figure(str(leftSpec))
axTop = axTopDict[leftSpec] # get the top axis associated with this figure name
axTop.plot(eval(leftSpec),'m')
for rightSpec in RightSpecList:
fig = mplt.figure(str(rightSpec))
axBottom = axBottomDict[rightSpec] # get the bottom axis associated with this figure name
axBottom.plot(eval(leftSpec),'g')
mplt.show()