I am really not merely talking about things like mechanical vulnerabilities. Though even with them there needs to be some in-character justification for why the character would know that for the acting on that information to make sense in the fiction, regardless of by whom the information was provided. But the issue is much bigger than that and I have hard time grasping how one could not see it. There is a lot of information in the setting books and modules that the players might know yet the characters wouldn't. I really don't get how this can be controversial at all. And the GM constantly changing the setting to counter the metagaming is an absurd solution.
Re: settings -- this isn't a problem I see, still, or, if it is, it's the GM's fault, not the player's. If the GM is presenting scenes that hinge on setting details being secret, then that's on them if a player is well read. It's pretty trivial to present scenes where setting details are present but not the crux of the problem, so if a player knows that detail it's neat and interesting and is possibly something that can be leveraged through clever action, but knowing doesn't obviate the challenge. This is a pretty simple approach change, where you look at a setting detail not as "oh, I'll make an adventure about discovering this detail, and finding out will be the crux of it!" to "oh, I like this detail, I'll make an adventure that uses this detail as a thematic element, but it's not the crux!" The latter lets players enjoy seeing things they know operate in the game, the former leads to acrimony or forced pretend ignorance.
Re: modules -- this is trickier and goes to "don't play with jerks." If the premise of your game is that you'll be running a module, or you add one in the middle, the table should expect the players to pipe up when they realize it and say they've played/read/run that module before. Then you and that player can discuss how you want to approach it. If, instead, a player keeps that information to themselves, this isn't a metagame problem, it's a jerk player problem. As
@Elfcrusher keeps beating, this drum is pretty darned important. Let's not make a jerk player a vector to criticize someone's playstyle. Also as previously noted, this player, if clever enough (and that's not very), can still disrupt a game with a "no metagaming" rule -- they just are a tad sneakier.
Here's a fun anecdote regarding how my previous stance against metagaming caused an issue. I was running Return to the Temple of Elemental Evil (a module I still have a soft spot for, despite it's problems) and one of my players, having very rarely ever searched for a secret door (in fact, the party rarely searched for them), suddenly and out of the blue declared they were searching for a secret door in the exact 10' section of wall where one existed. And, secret doors weren't very common in that section of the module (the mines). I was completely taken aback, and my first instinct was that cheating had occurred. I immediately challenged the declaration with a, "how did you know this secret door was here!" What saved this from ugliness was the player's reaction of, "What?! Really?! There's actually a secret door there?!" They just got a wild hair and randomly decided to search. Now, this wouldn't even be a problem -- I'd laugh if it happened again and would never even ask. Finding secret doors is awesome fun.