I worked on a project where there was an application client and a web client. Both clients could have shared the same model, pretty much. But we both had our own. Every time we had an upgrade the model, it was twice as much coding, testing and bugs. We added a third client, a flat file loading system, more pain.
MVC reduces code duplication Model takes care of business logic View is responsible for the UI presentation only (no business logic) Controller is responsible for controlling, authentication, authorization, logging stuff. Thus imagine app(s) where u are using the same sort of business logic, model parts are potential candidate for reuse. Similary u do have similiar type of UI in different app. Potential reuse of UI also. This across apps. Now in a single app, consider u want to have the UI of ur app changed keeping biz logic the same. Just change UI ie. View implementation (although using templating/tiles u could reuse view layer too in this case). But business logic and Controller stuff are intact. Similarly some biz process change has occured, u do not have to have again a full-fledged development cycle and integration of view/biz/controller. U r just to have reqd changes in biz layer. Actually decoupling parts of application is the trick of reusing to the extent u like. Hope it hepls.