That explains it. You're approaching it with a speedrun-like strategy.
I'm routing out a low RNG run so Croconaw is already at level 24 after Rival #2 due to Bayleef's Razor Leaf (need to be 24 to guarantee a 3HKO with Fury Cutter, though stat EXP might lessen that).
Okay, so first, I provide calcs that show that Alakazam needs a damage range to 1v1 Miltank even at a level advantage, and you completely ignore that in favor of focusing on the calcs that shows a fresh Abra has nowhere near "prime Mike Tyson" levels of damage when it's captured with it having half of Croconaw's damage on Miltank. Like yeah, no shit Abra loses at level 10, but it still can't guarantee a win at level 21 either! Then when I provide calcs showing it has a 20% chance to lose to a Rattata, instead of addressing that you say I'm trying to route a speedrun, when I've stated the stipulation of routing out RNG. Now, yes, the goal is "minimum turn count", for lack of a better way to measure efficiency. Going fast does matter. But also minimum RNG, and that entails trying to identify the best grinding methods for power leveling through bad matchups, and when it's more turn efficient to just catch another Pokémon and invest in it. Battle items outside balls are also restricted, and unless it turns out to be actually impossible, no player KOs too. As I said earlier, for R/B I had Clefable on the Bulbasaur route (also Dugtrio by the time I scrapped it) and Dugtrio and Zapdos for the Squirtle route (full party was Squirtle/Spearow/Dugtrio/Zapdos, E4 team was Blastoise/Zapdos). I developed this guideline playing that Pokemon-style Touhou game I mentioned some posts ago talking about fangames, where it ended up with a party of 5 for the first credits roll (that one has gen VI EXP Share though).
Now, for GSC, Geodude is absolutely the efficient pick for Falkner on a Chikorita/Cyndaquil start by these guidelines. It's faster to grind it to Rock Throw than grind the starters to beat Falkner without luck. Anything past that, I didn't route, as Totodile can beat Falkner by itself more efficiently, so it was the clear starter here. I strongly doubt Feraligatr solo is the actual most efficient way to go (Will being the most noticeable potential roadblock, would require a lot of grinding for a consistent itemless solo), but I do need to route it out to completion to be sure. What I am sure about is that Abra is not worth the time to capture and grind under this guideline when Croconaw is already in the low 20s by the time it's available. That is in fact underleveled.
To recap what I said about Abra before.
Abra line is overrated for in-game runs. It's consistently rated as a high-top tier Pokémon in the in-game tier lists when it's typically underleveled, requires switch training to grind, lacks coverage, and is very squishy physically.
GSC Abra doesn't require switch grinding and does have coverage. This is the only game that's true of it. It still needs 10+ levels to even try to participate in the gym it's next to and has a 1/5 chance to lose to a Rattata on the same route it's caught on. Very underleveled and very squishy. But hey, once you grind it up, you can bring it to Whitney in the same time frame Feraligatr has Olvine done. That does seem riveting, doesn't it?