It's unfortunate that this bug has been around for so long, and that most answers here thought the question was about horizontal alignment rather than vertical spacing.
The bug is known, and there is a patch to fix it, but it hasn't been merged, and simply been listed as needing review for the last year and a half.
Interestingly, it's a bug that is rather confusing. The problem initially arises in that, for some reason, TeX gives a minus sign (and several other math symbols) a descender value, suggesting that it extends goes below the baseline. dvipng, used to create the labels in raster backends, just crops to the visible, so this wouldn't matter. But to keep things aligned that actually do have descenders, matplotlib has a separate system, dviread, that reads values from the dvi file itself. This picks up the odd descender value. Then matplotlib's alignment system, thinking that part of the png is supposed to be below the baseline, moves it down.
The fix in the bug report is very simple, but I'm not entirely sure how it works. I've tried it, however, and it does work.
Of course, this question was asked in 2013, so it doesn't seem like the patch is going to be applied any time soon. So what are the alternatives?
One easy option is to just ignore the alignment issue when working, but, when doing presentation output, use the pdf backend. If you want images, you can always use other software to convert. The pdf backend does not suffer from the same problem, as it handles TeX portions completely differently.
The other option is to just tweak the position of negative xticks. In theory, you could pull the exact tweak out from _get_layout, which will give you the descender value, but I'm not sure how to convert the values. So here's an example of just eyeing the alignment:
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(-10.0, 10.0, 100)
s = np.cos(t)
i = [-10,-5,0,5,10]
plt.rc('text', usetex=True)
plt.rc('font', family='serif', size=30)
plt.plot(t, s)
for n,l in zip(*plt.xticks()):
if n<0: l.set_position((0,0.014))