I think my experience is useful here.
One of my projects is a web interface that implements some of our flagship products functionality. This can/must be custimized on a client-by-client basis.
I ended up with the following template directory structure:
/general (header, footer, etc)
/page1
/page2
/page3
I then named the base template for each page as pageX.ihtml so for page1.html I had a page1.ihtml then I had other template pieces for the page in the same directory (table rows, etc.)
On my personal site, I've recently added user defined templates so that users can define the look of the page. To accomplish this, I defined a lot of 'global' template variables and then parsed the requested template using the variables. I believe slashcode does their pages in a similar way.