The $select widget doesn't currently support the "multiple" property.
To make it capable of handling multiple values, there are two functions in $:/core/modules/widgets/select.js that need to be extended:
* SelectWidget.prototype.handleChangeEvent() currently just assigns the DOM element's .value attribute (the "current selection") to the target tiddler field/index. To support multi-select, this function needs to iterate over all the items in the DOM element's .options array and concatenate all the selected items into a single space-separated, bracketed list that it can then write into the target tiddler field/index.
* SelectWidget.prototype.setSelectValue() currently just takes the stored value from the tiddler field/index, and sets it into the DOM element's .value attribute. To support multi-select, this function needs to split a space-separated, bracketed value stored in the tiddler field/index into separate items that can then be individually selected in the DOM element.
Both of these enhancements would only be triggered when the "multiple" attribute is used in the <$select> widget, so that the widget behavior would be unchanged for all current uses, so this would be a 100% backward-compatible improvement to the core functionality.
-e