Well... I just figured out what was causing this, although I still don't understand why it was causing it, so if anyone has any suggestions I'd still like to hear them.
I start EmulationStation with the "screensize" command line parameter, because I'm running at 240p on a CRT with a super-resolution (1920x240), and if I don't do that Emulationstation gets confused and scales things wrong. I then use XWindow's built-in scaling to scale EmulationStation to the full width of the screen.
This morning I changed it from this:
--screensize 300 225
to this:
--screensize 300 222
because a few lines were getting cut off on the bottom. I neglected to change the horizontal though, I should have changed it to 296, to keep the aspect ratio at 4:3. Apparently it was the aspect ratio change, even though it was tiny, that screwed the buttons up.
I had moved on to editing my theme and completely forgotten about making that change by the time I noticed the messed up buttons. Oops. :-)