I am not able to deep copy UserControls because they are not marked as serializable.
What is the reason behind this design?
You can serialize Controls but not via standard serializers. If you'd like serialize one or more control on a form to save the form design and/or other control properties you can use the same serialization used by visual studio (via CodeDomSerializer) but you need to implement several classes (I think at least IDesignerSerializationManager). You can see a sample here
http://support.microsoft.com/default.aspx?scid=kb;en-us;813808
The serialization is in Class SampleDesignerLoader method Flush.
In the same method there is also a serialization in an XML stream that does not use classes used by visual studio.
In the same class there is the deserialization from XML.