A similar conclusion struck me when I was taking a linear algebra course in my 1st year. I had a very smart friend, and sometimes I studied with him. He usually studied a lot more than myself, and naturally fared a lot better (and more consistently). However there were some problems which were very unusual which I would look at, think for just a few seconds, and have a delightful path to the solution -- and often tim…
I've noticed myself that there are two types of "math" that people tend to be good at:
1) Algorithmic - Following a set of steps to achieve a particular result. Algorithms, discrete math, "compsci" math, and procedural and OO programming. Coders tend to be good at this kind.
2) "Abstract" - "Pure Math", what I would label as the harder kind of math, like calculating the intersection of planes, calculus, linear algebra, etc. Pure math majors and theoretical computer science folks are good at this kind.
I have met folks that are good at 1 or 2, or both.
Forgive me for my poor use of terms, I'm one of those folks that is not particularly great at math (mostly due to lack of practice) but I was always curious if my observation was backed up with any "real" terms or if there has been any research into this kind of thing. What you describe seems to be relatively close to what I've observed myself.