Yup. This is a problem when using once() for programmatically populating defaults (from other data) irregardless of the question type: if you can subsequently null the value - be it a string, or selectmulti, or whatever - then the once() will likely fire again at some point and reinsert the default!
Unfortunately, until dynamic defaults become widespread, is probably about the best we can do right now.