I worked hard on this for more than a month, and here's what I found. Following the directions on "How to Unroot Nexus S 4G!" from nexusshacks.com, I flashed the original, stock 2.3.4 Android ROMs back onto the phone. I found that everything worked fine under 2.3.4, but as soon as I installed the OTA 4.0.4 update, all the previous problems returned.
I went through the stock flash-update apps-OTA OS update process carefully, three times, over the course of many days, and pinpointed the OTA update as the point where everything screwed up.
After running 2.3.4 for a couple weeks, and dismissing the popup asking me to update to 4.0.4 repeatedly, I decided I was unwilling to live as effectively a second-class citizen, and arranged to return my phone to Samsung for repair. (I updated to 4.0.4, experienced the crashes, called Samsung and walked through the hard reset process, and when that didn't work, they issued an RMA.)
Samsung still has my phone, so I'll update when I get it back and see if they've fixed the problem. I don't know what it could possibly be, given that 2.3.4 works perfectly, but a friend suggested that maybe there is some RAM issue and 4.0.4 addresses RAM differently? I don't know. Fingers crossed on the repair though. D