Nine months later, I have finally run across a clue that lead me to a solution! Another Stack Overflow question and answer, Is it possible to prohibit axes rotation with the mouse in Mayavi?, exposed me to the idea of setting up a non-default “interactor” to control what mouse clicks and drags mean.
And there is indeed an interactor that keeps the Z-axis “up” no matter what the user does:
http://www.vtk.org/doc/nightly/html/classvtkInteractorStyleTerrain.html
To activate this interactor in the Mayavi main window, simply add the following three lines to your code (for example, you can add them to my globe-building code in the question), and the globe will always remain upright!
from tvtk.api import tvtk
fig = mlab.gcf()
fig.scene.interactor.interactor_style = tvtk.InteractorStyleTerrain()