I don't think that battle should have been restarted, but continued. I mean, that's not fair; Ash had already sent Pikachu and Noctowl (which was defeated) in the previous battle, so Snorlax or Charizard shouldn't have been allowed to battle.
Ash was losing and was going to lose, he just had one pokemon and Pikachu left but the battle started from the beggining.
In addition, Charizard is that pokemon that Ash just calls when problems appear, as well as Snorlax or Squirtle, for example. Also, Ash doesn't call them, they come anyway without any reason! It's very suspicious that when Ash was battling against Clair Charizard appeared and agreed to fight for him. Charizard is perhaps Ash's strongest pokemon, well, was, because he's no longer his trainer.
If the battle hadn't been started again, Kingdra would have beaten Pikachu; and I don't think Charizard could win Kingdra, Gyarados and Dragonair.
If I had been Clair I wouldn't have let Ash use his Charizard or restart the battle. You just have one pokemon and Pikachu, I still have Kingdra and two more. Another thing, when Charizard dried the pool (how? I mean, he burnt the water with fire and it evaporated!) Clair should have called his Dragonair to make an hydro pump or something to fill the pool again. Bad move. Another unfair thing, when Charizard appeared, the "referee" opened the floor so that he could fly, that's a clear advantage to Ash.
To sum up, the battle was exciting, but winning that way is a swindle... that battle was cheated and tricked. Ash shouldn't have won.