In Drupal core, there are many template files that have random PHP-isms in them (function calls, complicated logic, etc). We should refactor the code to remove those.
This is a good thing to do in its own right (it keeps the tpl.php files simpler, easier to read, and focused on their main purpose which is defining the HTML structure), but it would also be a prerequisite for some of the bigger changes people have talked about making to the theme system in other issues (such as moving to a non-PHP-based templating language that could be reused both server-side and client-side).
For the purposes of this issue, removing calls to render() and hide() is out of scope, because that's a much more complicated can of worms. (For a stopgap solution to that problem, see #1158090: Separate usage of hide(), render(), and other template features from print statements to enable non-developers to create themes ; for ideas regarding more comprehensive solutions to that in Drupal 8, see #1499460: [meta] New theme system and other issues.)
Instead what I'm talking about here is all the other random stuff. For example, in search-results.tpl.php:
<?php print search_help('search#noresults', drupal_help_arg()); ?>
Or in page.tpl.php:
<?php print theme('links__system_main_menu', array('links' => $main_menu, 'attributes' => array('id' => 'main-menu', 'class' => array('links', 'inline', 'clearfix')), 'heading' => t('Main menu'))); ?>
Things like that.