I can’t remember where I first ran across this idea, but I used it way back when I was running a D20 Modern campaign.
The basic idea is, before introducing a new NPC into the game, consider whether an existing NPC which the party has already met will serve. There are a number of advantages to this.
One of the main ones, in my opinion, is that it keeps the cast list for the game small. The fewer important NPCs there are, the easier time the players should have in remembering at least something about each of them. Hopefully.
Another advantage is that it keeps the players wondering. If each adventure has its own NPCs who never reappear, the player are likely to not care much about them or their motives outside of the obvious. When the NPCs start showing up in later adventures, especially if there’s no obvious link between the two adventures, at least some of the players are likely to be curious as to why this NPC has shown up again. It’s worth noting that you, as the DM, don’t actually need to have an explanation as to why the NPC is showing up again, if the players get curious they’ll start theorising. Just take the theory which you like the best and pretend that was what you planned all along. There’s a good chance they’ll be ecstatic that they figured out your plans and outwitted you. Just don’t tell them the truth
One last advantage, one I quite favour at this point in time: It reduces the amount of work the DM has to do. That’s always a good thing.