If you look carefully you'll see that the print statement does NOT subscript the "1".
Currently there are two ways to produce what you want. One is to use a label object:
a1 = arrow(pos=vec(-1,0,0), length=2)
label(pos=a1.pos+a1.axis-vec(0,.2,0), text="ê<sub>1</sub>",
height=60, box=False, opacity=0, font='serif')
The other way would be to use two 3D text objects, one for the letter and another for the number, positioned appropriately to look like a subscript. If you use this approach, it would make sense to have a function fpos, (letter, number) that creates the two text objects.
Bruce