I pitched a conference talk about this recently, if it gets accepted I'll have a good excuse to write this up. It's surprisingly hard to find good information about!
WordPress is a pretty good example (and all the problems that entails if it gets out of hand). They use a hook/filter model to change outputs of various systems via plugins, and allow plugins to reimplment low-level functionality.
I recommend checking out their approach, as it is pretty flexible.
Another good example is CKAN, the most widely used open data portal platform. Their docs are pretty good on how to write plugins -- gives you an idea of how the architecture works.