I propose we lazy load the content in these variables when the variables are called the first time which will typically be in the template files. Since lazy loading is a feature of objects it will mean these variables will be attached to objects.
So, in drupal 6 you theme would have:
The proposed change would make these:
The name $template_object is just a working name.
The reason for this desired change is performance and scalability. For example, currently (in D5 and D6) all the regions are loaded for a page.tpl.php file. So, if you have a lot of regions they are loaded every time. If we move to lazy loading the variables that means the regions will be lazy loaded. Only when one is printed in a page.tpl.php file will it be loaded.
So, you could have 20 regions on your site. Stick 5 in your page.tpl.php file, put a different 5 in your page-front.tpl.php file, stick a couple in your node.tpl.php file (I use this to stick a related content block between my node and comments on a blog), and stick them where you please. Then, the regions content is only loaded if the variable is printed in a template file.
On top of that, any variables provided in drupal that you don't use won't cause a performance hit against your page. They will never be generated if you don't use them.