We have a single codebase that we share with all websites we build. We're an ASP.NET shop, so in practice that means a VB.NET class library. This includes extensions of the basic ASP.NET controls (a custom SqlDatasource, a custom FormView, a custom CheckboxList, etc.) as well as other custom web controls and a library of utility classes and functions.
Typically a website consists of a 2-project VisualStudio solution, one project for the website itself, and another project for the shared codebase. When we build the solution, any changes to the common codebase are built at the same time. Changes to the codebase are checked in to source control and propagated to other websites whenever they're opened back up and the latest code is pulled down.