In case anyone passes this way again, here’s how I worked through this problem. I decided that there was something in my font tripping up Glyphs so that it wouldn’t export a variable font. Perhaps there was a bug in Glyphs, perhaps not. But the problem was only with the italic face, not the accompanying roman, so if there was a bug it was likely to be rare and obscure, affecting very few fonts.
I used the Remove Features parameter to figure out that the problem was with anchors, not kerning, and I spent several hours fruitlessly poking through the italic anchors, trying to figure out what was wrong (it wasn’t that there were too many anchors in the italic, which had fewer than the roman).
Finally I decided to write a script that would go through the italic font, trashing the anchors in each glyph and replacing them with anchors copied from the roman font, but retaining the italic position attribute where possible. (Since the collection of anchors in the roman is more complete than in the italic, this means that I’ll have to fix the positions of a lot of anchors newly added to the italic. But I was going to have to do that sooner or later anyway.)
The upshot is that the font now exports as either static or variable.