I've thought about that a lot as I also have the same tendency. What I've concluded (for me at least) is that it's just EASIER to get started writing an engine than to write a good game, so you end up working on the engine out of intellectual curiosity and because it's the path of least resistance.
(I've never really gotten far writing a 'from-scratch' engine here but I'm also thinking of things like integrating a scripting system into an existing engine, which is something I've done before).
With an engine, you don't start with such a nebulous spec. You know, for example, the various pieces that your engine will need and it's easy to get started. You can say "well I need an asset importer", "I need to integrate a scripting system for gameplay", "I need some kind of rendering pipeline", etc. These are generally well-defined things.
With a game, well, what is there? You start off with the question "what is a fun game idea?" but in comparison it's so free-range. The ideas of where to head next just don't come as easily. Not to mention a lot of the non-programmer things that need doing - drawing the graphics, writing the music, writing the dialog if appropriate, etc. These can be intimidating things to attempt to do.
In this case, I see an analogy with the whole "Do it manually with a few customers" advice for startups that pops up from time-to-time. You write the damn code from scratch and see what gameplay is interesting, then you can write tools within that domain.
I have several still-unfinished Game Maker apps which more or less died because I got so bogged down on the "engine". So yeah.