Assembling a good team is one thing, but executing a plan to take down the toughest opponent is another. From my current observations, I would say that Ash should save his trump card Charizard for Garchomp, but he would have to learn an effective move that is both fast and powerful. Dragonclaw could be a good choice as Seismic toss not only takes too long to fully execute, but Garchomp could even lower the damage like Harrison's Blaziken did. Even a flaming Seismic toss wouldn't do the trick. Dragonbreath, Flamethrower and maybe Steelwing would work.
Pikachu would be a good candidate for Lucario, but Iron Tail wouldn't be very effective. If Pikachu could learn a paralysis move, it would slow Lucario down enough to shock him. However, Pikachu is virtually useless against Garchomp as she's part ground and Quick attack and Iron tail are far too risky to pull off, unless Ash would use him as a "martyr" pokemon where Pikachu takes a bit of a pounding to lower the power of some moves.
Gastrodon is part rock and part ice so several good candidates could be Sceptile, Heracross, Bayleef, and perhaps Donphan. Bayleef would have to trap Gastrodon with her vines, but first slow him down with sweet scent then razor leaf and slam him around. Sceptile would have to resort to Leaf Blade and Bullet Seed but avoid solar beam unless slowed down enough or has enough health left to take a pounding. Donphan, though weak against Ice has the earthquake move and rollout, but he could also be used against Garchomp with this strategy: When Garchomp digs, Ash could immediately switch and call out Donphan and use EArthquake, and Garchomp is trapped! That plan however, has a slim chance of success.
For excellent speed, Staraptor is probably the best candidate as he has brave bird and close combat. If not, Swellow is a good substitute as it knows Arial Ace and double team, though the latter is almost useless as Cynthia isn't easily fooled.
I'm sure there are other good strategies.