You Can't Nerf and Respect at the Same Time
How can I best keep the fights interesting while respecting their character creation choices?
Essentially, you cannot. You're asking for, in essence, "What is my next step in the arms race?"
If you have a party of the expected level and number of players, you don't need any rebalancing to accomplish interesting.
Attempting to ratchet the difficulty up is inherently not respecting their build choice
Increasing the Attack Bonus
This is the most obvious disrespect of the choices they've made. It's an outright negation of their choice.
Modify the Encounters
This is more of the same - tho less egregious. But it's the same problem - you want to take away the advantage they paid for in feats.
Disallow Moderately Armored
This also is disrespecting their choice. You seem to have already figured this out.
Interesting ≠ More Difficult
An interesting fight isn't of need more difficult. It's often non-combat stuff that makes it memorable.
So What To Do?
Use what's there better. Assuming you're running a party of the correct levels (IIRC, it starts at 3rd for the non-encounters version), and have only 4 players, the encounters are balanced. So it's time to use what you've got.
And what you've got are a bunch of nutjob cultists. Have them making brash assertions of skill. Have them use group tactics and the 3rd dimension well. Make use of the terrain. Use the multitude of "save or suck it" spells (like the create bonfire cantrip).
And above all, describe, describe, describe. Don't say, "Cultist 1 attacks Player 2." Do say, "The tall cultist is attempting to impale Fredo upon his spear." Things will get a lot more interesting and memorable just by describing better.
Mechanical Stuff to use
There are a number of mechanical options that can increase the risks to PC's without disrespect...
Give monsters their death saves. This really does make for some tense moments.
Remember to use cover and consider using flanking(DMG optional rule, p. 251). If the ranged attacker (spellcaster especially) doesn't have line of sight to all 4 corners of the target's square, the target has +2 AC (partial cover). If only one corner can be seen, it's +5 AC (3/4 cover).
Use the Lingering Injuries option(DMG, p. 272). Makes crits much nastier.
The rules as written don't say that a Wisdom (Perception) test is called for in this situation.
SRD, p 94 (emphasis mine):
When you attack a target that you can’t see, you have disadvantage on
the attack roll. This is true whether you’re guessing the target’s
location or you’re targeting a creature you can hear but not see. If
the target isn’t in the location you targeted, you automatically
miss, but the GM typically just says that the attack missed, not
whether you guessed the target’s location correctly.
However, part of this is still a DM call.
The above doesn't help tell you whether the human is 1. "guessing a target's location" or 2. "targeting a creature they can hear but not see." So it's probably your call as DM. If it's option #1, the human would be picking a space and attacking a hypothetical opponent in that space. If it's #2, the human would know what 5' x 5' space the elf is in, and would take disadvantage on the attack roll. #1 is a lot harder for the human than #2.
Facts to take into consideration when making that call as the DM:
- If the elf isn't hiding, then they presumably aren't taking steps to remain silent as well as unseen. As a DM, you may rule that those sounds are sufficient to tell what space the elf is occupying, and allow the human to move adjacent and attack (with disadvantage).
- If the elf is trying to remain silent as well as unseen, you may want to revise the premise of the question and say that it does count as being in hiding and make a Dexterity (Stealth) roll for it.
- Be wary of making a ruling that makes it harder to attack a non- hiding elf than one that is hiding. If you were to rule that the non-hiding elf couldn't be located with a Wisdom (Perception) test because it isn't hiding, but that a hiding one could, you're creating a weird paradox in which it's more advantageous to stand there than to take steps to conceal oneself.
Best Answer
Doorway dodging is a valid tactic and comes up a lot in computer games; dragging everyone in the room into a small spot where they can be burned down in a hail of AoE (Area of effect) damage works.
I have a few ways this can be dealt with:
Close the door
This works best for boss fights since it will get old fast but the door closes automatically, the first time one player gets trapped outside the fight they will learn.
Run away
Creatures in the room back off into the next room
Hide
Creatures hide behind things during their turn so when the doorway people come in they have no targets.
Ready actions
Creatures can or stay near the door and ready an action to attack as soon as someone comes through the door.
Match the tactics
Creatures can use the same tactics as the players. Have them spend one turn getting close to the door, then they can dodge in and out just like the players. If the creatures outnumber the players then you have some dodging in and out, and other readying actions as a trap for when the players do it.
Change the environment
More drastically you can change the environments you scripts to not have so many rooms or doorways.