Tim, thank you for your long answer.
I'll split my answers into several posting - with one aspect each.
@ I am struggling to see the connection between usability and templates.
Usability is much about functionality presented on the page and the place where a certain link/button or similar is presented on the page. To change these aspects you need to change the XHTML structure of the page - and that is the template when you have a template system.
@ View VC does all the UI in templates, so to do that, I of course had to edit the template; but then I also had to hack the PHP code, in order to make that information available to the template. So, in that one example, templates did not help at all.
Right, you only can change the presentation of existing elements or leave those elements out not needed in the specific use case. Most template engines offer the ability to add content when needed. So you should be able to add the content without hacking core functions.
@ every aspect of the interface is controllable by the templates in the theme
The templates in the theme override the core templates. Only changes go into the theme templates. When you want core changes you change the core templates.
@ someone expending a lot of effort could make a theme that didn't suffer from usability problems. However, that is only one theme.
Often you don't need a lot of effort to solve usability issues in certain use scenarios. In my daily work I don't need to solve basic Moodle usability issues. I need to solve some usability issues related to certain tasks in the very specific learning environment. If I would propose this special fix you would ask what the general use for Moodle might be. Here we are stuck. The client can't solve her special usability issue because Moodle is not flexible enough.
@ the alternative approach is for developers to fix the usability problems by fixing the PHP code.
In your argumentation you sketch an ideal world. When you check the Moodle Tracker you will find many proposals I have made to fix interface issues - many have never been solved. Or you will find issues where I wanted to optimize Moodle code and I asked for help because I was stuck. Many have never been answered. Moodle core developers have restricted resources and interface design and usability are not in the focus.
So your scenario that core developers are the only ones who can make Moodle work better is an illusion. Moodle needs to offer more flexibility that people working with Moodle can solve their issues themselves. And not by hacking PHP code with the implication to take care with every update.
That is one mayor reason why I argue for templates. When I am able to change the XHTML in the template without hacking core PHP code I can solve many issues within specific use scenarios easily.
There is no reason why these changes should not go back to Moodle core when they are of general interest. Your implication that the possibility to change the specific learning environment hinders Moodle from evolving in general I need to reject.. I suspect the opposite will be the case.
For example: When I propose templates you ask for examples. When someone optimized Moodle in a certain use case you have the example. But to be able to create working examples Moodle needs to be more flexible. Looks like a vicious circle.