CreateChildControls вызывается всякий раз, когда каркас (или вы сами) вызывает метод EnsureChildControls. Этот метод следует вызывать всякий раз, когда вам нужны дочерние элементы управления.
В случае платформы она хочет установить опубликованные значения между OnInit и OnLoad (чтобы вы могли получить доступ к значениям во время OnLoad). Поскольку для этого нужны элементы управления, он вызовет для вас EnsureChildControls.
Если нет обратной передачи, также нет необходимости устанавливать значения, и, таким образом, вызов EnsureChildControls будет ждать до тех пор, пока каркас не будет нуждаться в элементах управления. Это происходит между OnLoad и OnPreRender.