At the moment I guess the Engine theory, that games are always cheaper if you don't start from scratch but build around an existing code-base, is more a theory. One the devs here don't subscribe to!
It really stands to question how much can you really share and how much do you really want to share across separate projects? There is certainly little to gain by not sharing tools if you're doing multiple projects at once. The things we often associate with a "game engine" on immediate inspection tend to be the things that also need to evolve rapidly, so if you're working on one game at a time, it really isn't a big deal to start over.
But traditionally, it's not the "engine" part of the engine that's a pain in the neck. It's the tools part of the package that's hard to get right. And as there is a drive for more content, the tools need to be that much more usable and that much more powerful at the same time. And it's also why people like to spend a million on Unreal.
The previous studio I worked at was an indie developer pretty much relying on one publisher, and they managed to keep costs down with a base framework that just continually evolved as they kept pounding on it... though they did so to a fault, in that it still contained 10-year code rot and 10-year old bugs (and I mean innocuous ones like "if (direction.y = 0.f)" type bugs), and all the while hoping that it would be a feasible codebase off of which to build for next-gen. Even otherwise, I don't think it would have worked for anybody else, as most studios tend to pay their artists more than minimum wage.
In the case of where I currently am, it works out well not so much because we're big, but because we're owned by our publisher, who owns several other studios and features tend to move around. Though it is rather absurdly expensive, part of the trick is to isolate what makes sense to be turned into something totally generic -- a good deal of which has to do with making every last tool completely data-driven, and that's the sort of things that can live on through several iterations of the engine irrespective of what we do to the renderer or the physics or animation, which is what most people see of the "engine."
OT : Who the hell comes up with these names for game engines? Source, Build, Coded, and now Framework? I'm sure someone will come up with "Library" next... Maybe "API."