Over time, a site can become bogged down with plugins that have been added. Like a garden, it needs to be tended to keep the weeds out and the types of plants growing where you would like them. Rather than waiting until a site reaches a critical point, and then working through a complete remake, another strategy is to take what is there and make small changes over time.
In this way, the changes are easier to keep track of, and it can be easier to measure the effect a change has. An example of this is on The Business Therapist site where a compact script allowed the tags delivered (right sidebar, near the bottom) to be randomized, in certain cases (try loading two different pages, for example).
If a theme or plugin doesn’t have the functionality you need, and you would like to add something you can’t find, a theme can be modified by adding code to the functions.php file, or a targeted plugin can be written to get the effect you are after.
One way to try out something on a site, without affecting other parts of the site is to add a plugin written in such a way that the code can be added to the theme files, once working properly. This can include CSS, PHP or jQuery.