From the stream notes I've seen on Reddit, the streamer said he made an effort to not battle any wild Pokémon beyond the mininum necessary to cross through areas, and yet the Pokémon on his team that had never even been used in a battle before still ended up levels above Bede's (the "powerful" rival) strongest Pokemon sheerly from passive leveling; the streamer's Pokemon being Levels 16-19 and Bede's being 13-15. If he evenly leveled his Pokémon rather than rely on his starter, I think his Pokémon would be in the 17-18 range, which is even worse. He would've had to drop off his entire team in the box in order to avoid this, which is quite a workaround at such an early stage in the game IMO. Of course you could also try to avoid as many trainers as possible too, but I find that avoiding both trainers and wild Pokémon kind of defeats some of the fun of playing a catching- and battling- game in the first place.