secondo me, no
scusa, hai l' elenco degli optional principali
-> e lato server ti salvi i segnati nel db

hai i checkbox di quelli secondari
-> e anche qui, sempre lato server, solo i segnati insieme ai principali finiscono nella var $OPTIONAL

cosa differenzia il processo di update da quello di insert?
le eventuali note dell' inserzionista che ormai si trovano mischiate nella concatenazione?
(^ questo non è buono, ma avresti dovuto pensarci prima...)
sei in grado di scinderle chiaramente dal resto?
se sì le fai modificare a parte (altra textarea) e non hai problemi nel riassemblare $OPTIONAL esattamente come fai in insert

in update vuoi correggere il vecchio $OPTIONAL?
sempre lato server,
se il checkbox non è segnato cerca ed elimina nel vecchio $OPTIONAL la stringa corrispondente al nome del checkbox

lato client puoi fare un anteprima in tempo reale di come verrà fuori $OPTIONAL modificato
ma altro "di utile" al momento non mi viene in mente