taxonomy-term.tpl.php works like nothing else in Drupal theming in that it essentially acts as a "header" for the listing of node teasers that come after it. This means there is effectively no way of theming how or where that template outputs its node listing, nor is there any way of really theming the node listing itself (At least, without resorting to, say, recreating the entire thing in Views).
This results in modules like http://drupal.org/project/disable_term_node_listings -- this shouldn't be necessary.
It would be so much easier to theme the list of items if taxonomy-term.tpl.php controlled that node listing -- the entirety of the default template looks as such:
<div id="taxonomy-term-<?php print $term->tid; ?>" class="<?php print $classes; ?>">
<?php if (!$page): ?>
<h2><a href="<?php print $term_url; ?>"><?php print $term_name; ?></a></h2>
<?php endif; ?>
<div class="content">
<?php print render($content); ?>
</div>
</div>
Really, it should probably look something like this:
<div id="taxonomy-term-<?php print $term->tid; ?>" class="<?php print $classes; ?>">
<?php if (!$page): ?>
<h2><a href="<?php print $term_url; ?>"><?php print $term_name; ?></a></h2>
<?php endif; ?>
<div class="content">
<?php print render($content); ?>
</div>
<div class="items">
<?php print render($items); ?>
</div>
</div>
I'm not entirely sure how one would prevent this breaking existing sites that expect taxonomy-term.tpl.php to work as it currently does; any thoughts?