To answer my own question: you cannot assign more than one category because the implementation of CategoryLabel uses a hardcoded name of "Category", and a snip cannot of labels with duplicate names. This would easily be solved by having the Category label simply use the selected category as the name of the label, rather than the value. The label-search macro would also need to be refactored to support this change. I know at least one person considering using [Confluence] largely because of this weakness :-(