The game calculates which of the units available for a civ is the "best" defense unit (which means the highest production cost, doubled in case the default AI type is UNITAI_DEFENSE). See CvPlayer.cpp, CvPlayer::addFreeUnitAI function.
For the Shoshone, their version of the Scout is "better" than a Warrior, because it has a higher production cost (45 vs 40). Units that have UNITAI_DEFENSE as their default AI type have their value doubled, but neither of these units has it (for the Warrior it's UNITAI_ATTACK, and for the Shoshone Pathfinder it's UNITAI_EXPLORE). Both units have UNITAI_DEFENSE defined in Unit_AITypes, so they are eligible to be chosen.
If you want to control which civs get which units, the only solution I can think of is setting the StartingDefenseUnits in Eras to 0 for ERA_ANCIENT, and adding starting units for all civs in Civilization_FreeUnits.