Esto es más simple de lo que te imaginas, lo único que tienes que hacer es exponer una propiedad que sea una colección de los controles que deseas agregar, te mando una porción del código, para simplificar el ejemplo utilizo un arreglo, podrías implementar talvez una colección personalizada...:
Código:
<Bindable(False), Category("Opciones"), Browsable(True), _
Description("Lista de Controles")> _ ' Necesita System.ComponentModel
Public Property Items() As Button()
Get
Return buttons
End Get
Set(ByVal Value As Button())
buttons = Value
End Set
End Property
Private buttons() As Button
Por lo demás, el diseñador del Visual Studio se encarga de hacer el resto.
Saludos