I think the loose coupling you can get with full-blown use of dependency injection is a technical feature that can help a lot. When you break apart the pieces of the application you're less likely to get spaghetti resulting from "interesting" re-use.
You may be headed for excessive fragmentation instead, but that's another issue and less of global structural problem.