Here's what I discovered.
When my client originally created the survey, the site was set to use CSS containers rather than table-based containers. There was a problem with these CSS containers, so I switched back to table based containers.
In quizzing my client, he pointed out that this oddity with the survey module happened after making the switch from the problematic CSS containers back to the table based containers.
So... I was able to recreate the survey in the table-based container and now it behaves normally in Firefox, IE7, and Opera.