The difference is that the framework is built to be an open source framework - it has general abstractions.
Your own patterns and practices are developed to apply directly to what you're building.
Your own patterns and practices are developed to apply directly to what you're building.
That's a rather large leap of faith.
It's more likely that it has a bunch of abstractions that were chosen early in the project when the maintainers were young, dumb, and eager; that have since shown their age and have been worked around repeatedly; but can't be removed due to being core to the framework and having a large body of applications depending on them.