When developing with Symfony2 PHP framework I often see reccomendations to decouple code but most of the time that is accompanied by a 'if you want to release as a third party bundle'.
Which begs the questions, if my software is proprietary should I even bother to decouple it for e.g., using interfaces and models (abstract classes) for defining domain objects. You can use an ORM and create entities which extend from models and if you want to change to an ODM you can create a Document which extends from the model. This is just an example, there are more like having a UserManager which implements a UserManagerInterface (why need this in proprietary software which is never gonna be released to the public).
Decoupling to me looks more like a way to satisfy all needs when releasing your code as open source, which can adapt to most needs.