Hi there!
I agree with Jon in all of his points. I've just published a OJS with lots of .tpl modifications, on the following address:
http://www.brasiliana.usp.br/almanack.
Some time ago I realized that OJS has includes the possibility to customize .css files, but not for template files. The problem is that now I'm planning and update (from OJS-2.3.2-1 to 2.3.3-3) and found lots of modifications on the template files, and it's being painful for me to do that!
I've already worked on websites that used smarty with tikiwiki (blergh!), and there was a good custom layout system. There was a folder with all default .tpl files, and another with the customized theme (like a plugin). If we wanted to change any template, we pulled the file from the default template folder to the custom template folder and edited it there.
So, the template engine first of all search on the custom template for the .tpl file. In case of founding, it gets it. Otherwise, it uses the default template.
I think it's just like Jon's proposal.
Cheers,
Fernão
ps: the same for !important (I've to edit the common.css to remove then)!