I go into a new game with the presumption that the level curve has been set so that I can go from one town to the next with whatever team I have at the moment and do whatever there is to do along the way, and spread the experience around so that everyone's about the same level, and that'll be just enough to manage to beat the gym leader. At this point, GF's pretty good about that, so it usually works out. I usually end up grinding anyway though, but that's because I'm constantly switching out team members and trying out new pokemon. But I just grind the new ones up until they pretty much match the rest, and that usually works. I don't like to grind more than that, mostly because I prefer to be underleveled and to win with strategy - it's just much more satisfying to me that way.
I completely ignore EVs in the first run through a game, since I have no idea who I'm going to use later on and it's just too much hassle trying to avoid getting EVs I don't want when I'm just trying to make it from point A to point B. When I figure out an E4 team, I only use a current one if it already has a beneficial nature and if it hasn't battled much, so has few EVs, or can get by with a relatively even EV spread. For the rest, I retire the earlier versions of those pokemon (I've got a beach background PC box named "Miami" just for that) and go back and catch or breed new ones to make sure that they've got beneficial natures (and good egg moves, if I'm breeding), then I take the time to EV train them precisely. And with those, I only grind them up as far as I think I can get away with. Beneficial nature and good EVs plus a solid moveset is plenty of advantage right there, and almost nothing satisfies me more than being able to beat the E4 underleveled.