Вы будете создавать свои элементы управления в Init или Load, пока не напишите элемент управления, который должен воссоздать элементы управления.
Я считаю, что всегда лучше создать элементы управления в CreateChildControls, а затем использовать EnsureChildControls, чтобы убедиться, что они создаются, когда они вам нужны. Это дает вам возможность разрушать элементы управления, устанавливая для ChildControlsCreated значение false и повторно создавать их при необходимости.