They're not - 1000 fields in an RDBMS is a helluva lot. In normal use, it's very rare to see more than 200.
The survey isn't that bit but it appears that the way it has been structured isn't really suitable for the way LS does things and we can't see a simple way to re-factor it to change that. If anyone else has suggestions on that front, we're listening
You can't split the columns amongst multiple tables as the whole thing is generated programatically by LS itself. The only solution I can see would be to re-write the LS module that stores survey responses - not a trivial task!! I would probably have a single table with one answer per row, each with a reference back to the question it was answering, a respondent Id and the answer itself. That might result in a great many (shortish) rows, which I believe works well with InnoDB. OTOH, the LS team may have already look at that & discarded it for reasons I don't know

(e.g. it might make result analysis difficult)
This is not a problem I have encountered before with a DB app; as I said, even 200 columns in a single table is exceptional.