I’m searching for a survey plugin and found yours. Must admit, I haven’t tried it since I’m planning a survey that will ideally get 500-1000 responses so haven’t wanted to jump on the boat here given the data loss issues. I suspect that your issue will be related to how much data you can stuff into a single option field. You could run into a similar problem with your move to store the survey data as a blob in post meta data.
There’s also some risk of data loss of individual responses with your present method if several people are attempting to respond at the same time. You could have a couple threads running at the same time, both issue get_options, update the value and the last writer will win.
In my mind, this use case screams for a new table in the DB to manage the response content. It would make the survey completion more scalable as more users respond as adding individual responses will require less data to move around. You could also devise a method of storing individual responses as post meta data to avoid a new table. Whichever you choose, I strongly recommend a solution that treats each response as a unique record in the DB so your plugin scales better.