BTW - I have written an article on this and you may view it here:
http://aspalliance.com/366
And snipleting from the article:
<snip>
However, to explain the logic of the InstantiateIn method: this method is called by the container of the template. If the template has any controls to add to the container control, it has to be done over here and no where else. Basically, the templates in the containing controls are abstracts of controls but are not given life yet because it is not added to the page?s control tree ? it is seen as part of the control. Once the InstantiateIn method is called, it is the templates chance to put the abstract controls that it contains into the page?s control tree; hence, giving the controls inside the template, the gift of life.
</snip>
-- Justin Lovell