I see that pylab.show actually shows some spaces in place of your square. But savefig gives what you describe. So you need to decide how many spaces you want a tab to take in your text, i.e.:
fig = pylab.figure()
text = "test \t test".replace("\t", " ")
fig.text(.1,.05, text, bbox=dict(facecolor='red', alpha=0.5))
Or, maybe you want to simply expand your tabs using "standard" conventions:
text = "test \t test".expandtabs()
This might help you!