Battle-based gyms and pre-battle episodes focusing on the gym leaders became standard,
Yeah, I'll give you those. It was nice to see the Gym leaders get a little more screentime than how they were blasted through in Kanto.
Still, Falkner, Bugsy and Chuck only got 1 episode each. It wasn't until Hoenn where every Gym leader got two eps.
several new characters were introduced,
If you're talking about Casey and Sakura, sure they were nice, but what was ultimately done with them? Casey was sort of built up as Ash's second rival in Johto, but then for some bizarre reason, the writers decided not to include her in the Johto league.
Sakura also only got two episodes and her Hoso, she was never really that interesting aside from being a parallel to Misty.
Harrison was meh. The only reason people care about him is because of his Blaziken.
we began to see Ash actually training his Pokémon,
Not to the extent AG did it. We had Pikachu training for several episodes to learn Iron Tail, we had Swellow's Aerial Ace training, Snorunt training to use Ice beam for like 9 episodes, Treecko/Grovyle/Sceptile had several character centric episodes, not to mention when it lost its moves in BF. He didn't do much with Torkoal though, as far as I remember.
In Johto all I remember him training was Cyndaquil for one episode. Totodile, Noctowl, and Phanpy didn't really get any time to shine.
and most if not all of the major characters matured in some way or another (Ash became more competent at a trainer, Misty stopped being so petty, Gary stopped his childish taunts, and Brock... kissed a Jynx).
That was indeed nice, except for the fact that it made Misty and Gary less interesting, but since it was their final saga as main characters anyway I suppose it was for the best.
Johto Ash still reminds me too much of Kanto Ash. AG and D/P Ash seem much, much more mature, not to mention in AG where he took May and Max under his wing and spent most of early AG training.