I use a system where gyms are assigned a level based on the strength of the leader in the games, so Pewter City is level one, Cinnabar is level seven, etc. When you challenge the gym leader, you fight them at their 'level', i.e. their pokémon are restricted to a certain numerical level demographic. However, if, at the time of challenging them, you possess badges higher than their level (i.e. you're challenging Roxanne but you already got Norman's badge), then the gym leader can use pokémon of the level group up to one higher than the highest badge you already possess. Therefore, if you had Pryce's badge at the time you challenged Morty, Morty could fight you at up to level eight--and he probably would, because if he just used his regular pokémon, he's not going to have much of a chance.
If the gym leader can't match your 'level', they can use the best pokémon that they do have, but if they're still pretty low compared to your pokémon (say, two or three levels below max), then they have the option of forfeiting and handing you the badge. Some would take the option to avoid danger to their pokémon (if the level gap was large enough), though others would fight anyway as a matter of pride. If they do fight, they aren't required to give you any sort of prize (TMs, money, etc.) aside from the badge.
If you get the eight badges from one region and move onto a new one, the gyms in the new region can require you to fight at 'level nine', but since getting to this range (say, level 60-70ish) is quite time consuming, especially for a gym leader who has to train new pokémon quite often, it's rare that they'd be able to go to higher levels. The new region's gyms would therefore be fairly uniform in level range (see Kanto in G/S). Of course, it becomes almost cheap after a while because the career trainer's same six pokémon are getting stronger all the time whereas the competition's are not, so it is often considered 'good form' to start from scratch or to pull some pokémon out of the PC that you meant to train eventually, when starting a new region.
The level range can also mean different things in different regions--for instance, Kanto's level eight seems to be around level 40-50 (Giovanni) whereas Clair's strongest pokémon is level 40, and Wallace/Juan are a little higher, 43/46. The 'fic I'm working on is set in a new region where trainers start getting badges at sixteen but can get a starter at twelve, so level one is 20-30ish rather than the 10-15 of Brock's gym.
This whole thing works for my writing because levels/stats do exist, though as a mechanical, plus-or-minus type of measurement. It mostly makes sense on the basis that something has to happen to gym leaders' pokémon when they get too strong for the level range. Gym leaders are trainers, too, so if they're training a team for tournaments or some such, it would be worth it to them to see how they fare versus a new opponent.
Wow, a little longer than I thought. xP Nice to get it straightened out on the screen, though, I guess.
Edit: Oh yeah, I didn't really reply to the question... Anyway, I've been going in the level order so far, since they're technically 'n00b' trainers and there's no reason in going to a level fifty gym when your strongest pokémon is level forty. Plus, going in order with the gyms is the easiest given the region and where they started, otherwise they'd be doing a lot of unnecessary backtracking, which would be a pain 'cause it's a big region. If they were established trainers in Kanto or something, I would probably go out of order 'cause the central gyms are kind of in a weird order geographically.