Ok, I managed to get your serializer working. You're right, you don't need nearly as much stuff in your ConfigureItemStylesEventHandler method as I had in mine as you're not dealing with components. The bare minimum you need to do is create your object and add it to the collection, no DesignerHost is required, you just create it using the normal constructor as it's not sited.
You'll want to do a little more than the bare minimum though, and let the IComponentChangeService know what you're doing so undo and redo will work:
c = (IComponentChangeService) GetService(typeof(IComponentChangeService));
newItem = new TextData("test", Color.Red); //(TextData) h.CreateComponent(typof(TextData));
c.OnComponentChanging(MyControl, TypeDescriptor.GetProperties(MyControl)["TextDataCollection"]);
MyControl.TextDataCollection.Add(newItem);
c.OnComponentChanged(MyControl, TypeDescriptor.GetProperties(MyControl)["TextDataCollection"], null, null);
You were also opening a DesignerTransaction and not closing it, which will completely screw the designer up.
That's all I needed to do to get your collection serializing. Bear in mind you can gain a lot by implementing an AddRange method on your collection, which the designer will use instead of repeated Add calls if it's available.