The question that I would ask is not Why didn't Ash send Charizard? Instead I say why would Ash send Charizard in this situation? it had no particular type advantage in this matchup.
In hindsight since Gary won it is easy to say that Ash may (or may not have) done better with a different Pokemon. However, in all fairness was there anything in the present situation to indicate that it would go badly? I really don't believe so.
Pikachu is Ash's most experienced Pokemon, as others have pointed out it had recently won Ash the title of Orange League champion by taking down an undefeated Dragonite. Yes, Charizard is a fully-evolved Pokemon so in that sense it was stronger, but Pikachu's levels were almost certainly higher than Charizard's at that time because Charizard had only been in a couple of battles by this point, while Pikachu had been with Ash from the beginning.
Ash was still new to training Charizard, while Pikachu was the Pokemon he had the best synergy with. It was not unusual behavior of Ash to pick Pikachu, he always picks Pikachu if Pikachu is willing and able, Pikachu is his oldest and best friend and usually does come through for him against extraordinary odds, toppling fully-evolved pokemon, pokemon that are immune to electricity and even legendaries like Regice and Latios.
Using Pikachu was not taking a risk in Ash's eyes, rather it was the opposite, a testament to how relable Pikachu was. In this instance I don't see anything wrong with Ash's decision. Both Pikachu and Eevee were first stage evolution Pokemon and Eevee probably was a Pokemon that Gary had acquired recently, not likely to be at a higher level than Pikachu.
Eevee is a rare Pokemon, Gary probably did not find it right away. We know for a fact that it wasn't Gary's starter Pokemon, that was Squirtle. Gary also unlike Ash almost always uses a fully-evolved team, and his Eevee follows this pattern. It was fully-evolved into an Umbreon by the time of Ash's next encounter with it in Johto. The fact that Eevee was not evolved at this time makes me suspect that it probably had not seen many battles yet.
Pikachu should have been a good match. There was nothing I can see that Ash or a Pikachu did wrong. I remember being surprised that Ash didn't win when I saw this episode and feeling bad for Ash. It just appears that Gary had a better strategy on that occasion and outmanuevered him. This can happen to even the best of trainers.