What I have learned here...
1) Selkirk and Voostind are both right.
2) There is no "Correct" answer to these problems. There is no magic bullet. There is no one-size fits all.
3) Every problem implementation has it's own Cost/Benefit trade-off that must be analyzed in terms of both the immediate and long term consquences.
4) There are several components of re-useability which must be weighed together: it's applicability to your intended goals for the software/library, ease of use, ease of maintanence, ease of extensibility, performance, and it's applicability to goals for which you never intended/imagined.
5) It is actually possible for intelligent people with different view points to have a reasonable discussion on a public board that can benefit the community at large. (This one was really the most surprising to me.)
I've ran into problems of this general nature in just about every aspect of web application development. Even though I have yet to find a "one-size fits all" solution to any of them, I still, naively, hoped to find one by the time I got to the end of this thread. But of course, this is the real world, and not a Design Theory classroom.
I think that both Selkirk and Voostind have very valid, and correct points, for different cases. It is refreshing to see both points of view presented in such a civil manner. Thank you very much for the info, and please, get together and write a book. Really. The problem with most info in book form is that you get one point of view and it's presented as the "RIGHT" way to do it. I'm probably not the only person who wants to develop several differnet problem solving techniques for their toolbox and the knowledge/experience to know which is the best one for the job at hand. Essentially this thread is treading down that path already, just keep it up. (It's really saving me a lot of work, not having to read/buy half a dozen different authors' books just to a build varied approach.)
Sorry to ramble on.