Here's my training regimen:
At all times my starter must be at least two levels higher than all my other Pokemon. If it is within one level of them, I will only use my starter until it is three levels higher than the rest, then train everything else so the gap is two again, and rise and repeat. This way, my extra Pokemon usually match the levels of the gym leader's, with my starter matching the leader's strongest Pokemon. Also, If you're the type to use the Giratina in the Pokemon League, you should only maintain a party of 5 (the sixth being an HM Slave). When you get to the league, just switch Giratina into the party. Being the uber that it is, it can survive being a few levels lower than everyone also. This also allows your Pokemon to become stronger because you're training 5 instead of 6. And finally, I wouldn't advise assembling your team early in the game. Training will be much too hard that early in the game, and I say a good time to get that fifth Pokemon is somewhere around the fifth gym.