The best time to evolve? Why, thats up to you!
You can control when your pokemon evolves.
Heres some of the reasons I evolve:
1.) Leveling Up: If you want to keep a basic or stage 1 in that form. So say I wan't to keep my Piplup as a Piplup. I'll give Piplup an everstone to hold onto. But, you could also press the "B" button.
2.) Trading: Say I got a Haunter through a trade and it was going to evolve, but I stop that using the handy "B" button. However, most people in gen.4 put there pokemon in the GTS to evolve if they needed to be traded to evolve.
3.) Stones: You wouldn't use a stone on a pokemon unless you wanted to evolve. For example: Eevee and the water stone to evolve into Vaporeon.
4.) Happiness: You can once again stop it with the trusty "B" button. For example: Golbat into Crobat.
6.) For A Move: Say I want a pokemon with as move but it evolves before it learns that move. So, I press the "B" button, give it an everstone, and then evolve it until it learns that move.
6.) Devolving?: Say I didn't want to evolve my Zorua into Zoroark, but it evolved anyway. I'm afraid your gonna have to breed it, which is very helpful, to start over.
Yep, thats all of the reasons I can think of. I don't see much reason not to evolve, but if you don't want to, heres the basic rundown: Press the "B" button!