Not sure this applies but I'm doing similar with a custom context menu system.
I'm deriving from the MenuItem base class, adding my own data along with event delegates.
I'm not interested in removing any yet but the method is available. I would assume if you are making your palettes in code, you should be able to manipulate them likewise. I could be wrong because I've not had time to view those objects in depth.
Personally, I'm treating the palettes like I did toolbars - I'll produce them for the user if they want to use them - statically. I'm also deploying the .xml files along with the .atc files so I can re-sync all tool palettes in case the user hoses them.
It sounds like you need more of a dynamic interaction so I'd stick with 100% code generated items and stay away from the tool palettes. Just my opinion.
If you figure it out, be sure to let us know.