A few comments, I’m not being critical or whatever, just sharing my experience. 
There are a few properties of Tags/folders that make importing/exporting a bit difficult:
'1) Unlike Tags, Tagfolders do not need to have a unique name. However, these folders are different objects with the same name. So if you only look at the name, it may not be what you or others think will be exported/imported.
The example below is extreme - the names like these make no sense, but they are possible, so we need to take them into account.(?)
For example, if the target model contains a structure like this:
Folder/Folder/Tag1
Folder/Folder/Tag2
The source model contains a structure like this:
Folder/Folder/Tag3
How do you make a new structure? Like this?
Folder/Folder/Tag1
Folder/Folder/Tag2
Folder/Folder/Tag3
or ?
Folder/Folder/Tag1
/Tag3
Folder/Folder/Tag2
or ??
'2) The visibility of Tags/folders can depends on the scene.
'3) Only the R,G,B part of the Tag color is passed through. Transparency data cannot be read or written with the Ruby API. (Well, I have a half-finished plugin somewhere, how can I do it anyway…)
If you have manually assigned a material to Tag (not just a color), only the average colors can be read and written. This is an old missing features (bug) in the API.