_FormSelectWidget checks to see if the store being passed in setStore() is observable (i.e. has the observe method), and if so, it observes it for updates to the select options.
However, it never cleans up the handle returned by the observe() method. So when you destroy the select widget, the observation continues, and of course, errors out trying to update a select list of options that no longer exist.
It seems like the writer expected the query results object returned from the store, to contain a special close method, and that this would take care of all clean up with regards to the store. You can see they check for _queryRes.close to do this. But, e.g., Memory Stores at least, don't produce query result objects that have this close method, and neither does Observable. I'm not sure which kind of QueryResult/Store? combination they were expecting provided this close method, and whether they though it would also clean observing handles. Nevertheless, this close method is never found so it's not used, and the observing handle never gets cleaned up on destroy.
Refer to dijit/form/_FormSelectWidget#setStore.
Test case modified to destroy second widget with same store.