I'm interested in reading about the various ways other developers and architects deal with the customization of certain areas of their applications for certain sites. Call outs to customer implemented pre and post processing, events doing the same, allowing business logic methods to be overridden, using strategies with pluggable modules, data configurable processes, e.g. rule engines, scripting, etc.
The list could go on, but I'm asking who used what and what the pros and cons are of each of these approaches, as well as what other approaches there are.
This assumes we don't create a customer specific code branch to accommodate these customizations.