Please notice the following from the glNewList documentation:
Certain commands are not compiled into the display list, but are executed immediately, regardless of the display list mode. These commands are glColorPointer, glDeleteLists, glDisableClientState, glEdgeFlagPointer, glEnableClientState, glFeedbackBuffer, glFinish, glFlush, glGenLists, glIndexPointer, glInterleavedArrays, glIsEnabled, glIsList, glNormalPointer, glPopClientAttrib, glPixelStore, glPushClientAttrib, glReadPixels, glRenderMode, glSelectBuffer, glTexCoordPointer, glVertexPointer, and all of the glGet routines.
Even though the vertex array commands are not stored in the display list, you can still build a display list from a vertex array. When compiling the display list, vertex arrays are dereferenced as if they are drawn, and moved into the display list. So there’s nothing wrong with your display list on that part.