Well, I tried putting everything in ‘General’ and it did not actually solve my problem (posted as ‘Anonymous’ above). But without doing that I probably wouldn’t have discovered the other issue.
Making all categories subcategories of ‘General’ was a necessary step, but only part of the solution. It also turns out that not only do categories without posts not show up, but neither do any of their subcategories – even if these do contain posts!
That sure looks like a bug to me, and in fact the whole idea of hiding categories with no posts seems unnecessary. It’s easy enough to work around by adding a ‘hello world’ type of posting in each category, but I’d rather not have display a bunch of poorly motivated material in order to have the site work properly.