Many games over the years have given particular enemies immunities to particular player attacks. In some games (often MMOs), this means the player must choose the right gear to take to battle. In other games (like Bioshock), the player must switch weapons, ammo, or combat stances on-the-fly; typically with a delay between one and four seconds. In still other games, the player can immediately respond with multiple options.
The first scenario is only good for games that strongly favor strategy over tactics, because you're screwed if you take the wrong gear. The second scenario can be annoying, but it does lead to tense moments while players slowly reload or adjust while bullets whiz by their heads.
The last scenario is my preference. Two games which act as examples are Batman: Arkham Asylum and Diablo 2.
In Arkham, knife-fighters are immune to regular hits until stunned. Flare-fighters must be jumped over and attacked from behind unless taken down with a grab. Crazies are immune to grab moves. These immunities make for fun tactical dynamics largely because countering them can be done instantaneously and in a variety of ways. For example, crazies can be taken out with a Ground Pound move, knocked down with a batarang, or knocked down by throwing other enemies into them.
In Diablo 2, enemies can be immune to elements (fire, ice, poison, lightning) or even to all physical or magic damage. Again, these immunities can be countered instantly and in a variety of ways. By the time the player encounters these enemies, he has acquired many skills. Whatever the immunity, the player has multiple skills which can get around it.
It's not a one-size-fits-all design strategy, but it has always felt more fun to me.