I myself say something more or less like:
Pikachu: 100 seriously unless it's maxed we will kill it everytime.
Butterfree: 93
Gengar: 90 sooooo fast, if that hypnosis lands you will be in a world of pain.
Charizard; 95 it can stay, it serves a purpose and is nice and strong.
Snorlax: 92 like I said this things a bitch to begin with, just make it stronger.
Here is where it gets tricky I feel like he needs a phsycic but at the same time he really needs a water type.
Golduck or starmie it is: 90 two birds one stone.
Of course that's not based entirely on calculating their stats so much as basing it on there move set ups after playing the game a million times, I would say that they all can learn increadibly formidable moves.
He has;
Endurance: snorlax; this thing I would recomend him to drop second or last it will make the fight really long, hopefully knowing snore and sleep talk. If this thing knew hyper beam it would own so hard because it can afford an extra hit of damage before it can sleep again, or even better if it sleep talks the hyper beam.
Tank: charizard; c'mon it's charizard, it just needs some strong attacks, preferably fire spin to get you stuck so he can switch out to something for status effects if, things get problematic.
Speedy: Pikachu; If his pikachu attacks first(which it will) hopefully they make it drop a good move before it dies, like zap cannon, haha or sand attack, hopefully you will miss and he can catch you in an infinite loop of sand attack then use double team while you keep missing. Sure you can just swap pokemon out but it would be hilarious.
Strategical: Gengar;(Technically faster than pikachu) Mainly his options are fantastic, he can drop a hypnosis-->mean look--->curse---> dream eater or destiny bond.
If he does you can't escape because of mean look, your slowly dying by curse he can gain his with dream eater if they don't want destiny bond, but if he has destiny bond and he dies so does your pokemon. Destiny bond could be an extremely dick move, He can kill one of your pokemon with constant hypnosis until the curse kills you, he will be at half health so you will chose a pokemon that can kill him in one hit, since he will likely go first he could drop destiny bond right before you kill him taking two of your pokemon with him.
Status effect: Butterfree, Nothing is gayer than having your giant dinosaur defeated by a butterfly; this insect can **** shit up bad, if you use it right and luck is on your side. For starters it can learn safe guard keeps shit from status effecting his team, not the greatest but can be really important sometimes. Sleep powder is amazing it hits more often than hypnosis, he can..
Sleep powder---> safe guard---> psybeam---> wirlwind, this move at first glance is a pointless move, but when used right can end up putting a whole team to sleep.---> sleep powder the new pokemon----> psybeam now you have time for two psybeams------> wirlwind----> rinse repeat. I have defeated lance with just a butterfree doing this. Of course psybeam does random damage but it has a chance to do quite a bit, adding to butterfree's high sp attack stat he will dominate. Though butterfree is a gamble he is devistating given the right surcumstances. Pikachu blinds an oponent, Charizard fire spins someone, gengar ****s someone over with his bullshit moveset, ect.
Just raw rediculousness; Starmie, I won't lie this pokemon is rediculous, I remember playing pokemon stadium and I beat almost all the elite four with just this thing; It can learn ice, pshycic and water moves since it's real fast and has great sp attack stats it can handle a lot of threats for his team, ice attack plant pokemon, pshycic poison, fighting and pretty much anything that it doesn't have a super effective move for.
Water moves, for rock, ground, fire, steel ect. It really makes a great filler for his team and is just flat out rude.
Yeah that damn miltank, was an asshole, Luckily, I had butterfree. lulz
RollOut!!!!! Oh, what? Miltank wake up, shit.....