For modestly optimized, I'd dump variant human. That is quite clearly among the highest optimization options at level 1.
Here is how I might model 4e style roles as 5e classes.
Soldier: Fighter, Longsword+Board.
Brute: Paladin/Barbarian, Smite+LoH+Rage, depressed AC.
Lurker: Shadow Monk or Rogue
Skirmisher: Monk, Rogue or Ranger
Artillery: Sharpshooter Gloomstalker Ranger/Fighter/Rogue (not optimized mix of levels)
Mage: Warlock, keep it simple
Fighter choices:
16 str, 14 con
L1: Duelist, Longsword, Shield, Chain (1d8+5; 28.5 TDPR)
L2: Splint (AS) (38 TDPR)
L3: Champion, sure (weak)
L4: Plate, Sentinal
L5: EA (76 TDPR)
L6: 18 str (1d8+6) (84 TDPR)
L8: 16 con
L11: EA2 (126 TDPR)
L12: 20 str (1d8+7) (138 TDPR)
L14: 18 con
L16: PAM (3x 1d6+7/1x 1d4+7 + 1x React 1d6+7) (186.5 TDPR)
L17: AS2 (218 TDPR)
L19: 20 con
L20: (4x 1d6+7/1x 1d4+7 + 1x React 1d6+7) (270 TDPR)
Put some early con bumps in and pushed PAM damage boost to end of T3 to flatten damage curve and boost HP curve a bit.
TDPR is "three round DPR". TDPR by tier:
T1: 30ish
T2: 80ish
T3: 150ish
T4: 250ish
Account for second wind in your HP budget. At level 20, this soldier has 20*6 + 4 base HP, 5*20 con HP, 1d10+20 SW for 249.5 HP. With defensive fighting style and wearing Plate +2 and Shield +3 it has 26 AC. Its TDPR is 270, so DPR of 90. It has PAM/Sentinal, which maps to "it is some way to lock down PCs as a tank". Its ATK is +11, baseline.
A Paladin/Barbarian to emulate a brute is fun. You don't use spells: you rage, lay on hands, and smite. So you have piles of HP (rage and LoH) and damage output (smite).
Our goal isn't for a monster to BE a Paladin/Barbarian, just gives us a rough power budget. This also deals with the fact that later level Barbarian is sort of crap threat wise.
(Bear) Barb 5ish then Paladin all the way. From the Paladin, we get LOH (5 HP per level, reduces offence), smite (and eventually improved smite), and mostly ignore all other features.
Use Bear Barb so we can treat Rage as 2x HP. Simple to model.
L1: 16 str, 14 con, 14 dex (1d12+5) (34.5 TDPR) (21 HP)
L2: Reckless (treat as +3-4 ATK and crits, -3-4 AC) (35 HP)
L3: Bear (7*3+2*3+5)x2 HP = 65 HP
L4: 18 str (1d12+6) (37.5 TDPR)
L5: EA (75 TDPR) (100 HP from Barb)
Pal1: LoH (126 HP)
Pal2: Smite (18 smite) (93 TDPR) (152 HP)
Pal4: GWM (!) (27 smite) (1d12+16) (162 TDPR) (204 HP) (-5 ATK!!!)
Pal8: 16 con (67.5 smite) (202.5 TDPR) (7*5+6*8 + 3*13 + 5 + 5*8)x2=337 HP
Pal11: Imp Smite (+9 DPR, +27 Smite) (256.5 TDPR)
Pal12: 18 con (94.5 smite) (256.5 TDPR) (7*5+6*12 + 4*17 + 5 + 5*12)x2=480 HP
Pal13: (+4.5 smite, 65 LOH) (261 TDPR)
Fighter1: GWF (+6 TDPR), SW(+6.5 HP) (267 TDPR)
Fighter2: AS (+1d12B2+7 x2 attack, +5d8 smite) (318 TDPR) (7*5+6*15+4*20+5+5*13+5.5+2)x2 = 565 HP
I did a bit more optimization, especially later on, in this build. Mainly to keep DPR going up steadily.
We ignore the fact this PC has access to Paladin spells, and honestly armor heavier than naked. This is intended as a big-bag-of-HP foe that hits hard and isn't super-accurate.
(Adding PAM would give this build a significant damage boost, as an example, and I delayed GWM until later to keep its damage from being crazy at low levels.)
I modelled smite by assuming the monster hits every attack and uses highest level smite on each hit (ie, brain dead use). Exact modelling isn't needed, the goal here is ballpark.
If this turns out to be too touch, I did let it use LoH without burning the action (!), which would cut its damage by more than a bit. In practice, if this target is focus-fired, it gets to LoH quite efficiently and prevent other allies from being hurt; if it isn't focus fired, it ends up doing damage and not using LoH until late in the fight, when it matters less. The tactical threat of LoH matters almost as much as the actual ability. But feel free to nerf the build's damage to compensate (or make the HP lower).
At level 20, this Brute has 565 HP, deals 318 TDPR (106 DPR) and has a miserable 13 AC (17-4 due to Reckless). Its ATK modifier is a mere +10 (treating Reckless as countering -5 from GWF).
Neither of these have magic items.
I used Champion subclass for the extra style and otherwise ignored it on the Soldier. On the Brute, I used Bear to justify 2x HP instead of tracking rage and ignored subclasses otherwise.
...
For a Lurker, I'd start with the Gloomstalker/Fighter/Assassin optimized build and deopitimize it.
Gloom 3-4/Fighter 5-11/Assassin 3-11. Play a bit fast and loose with the alpha strike rules (as "NPC surprises you, 3 of you are dead" isn't a great combat encounter) just use it as a damage budget calculator.
(On round 1 at level 11 this (with surprise) does 6 auto-crit ranged attacks with advantage.)
You end up emulating a relatively fragile "pop in and do damage, then hide and setup" creature. Replace "surprise round" with "it needs a round of setup" - so the monster disangages and hides. If not found, it pops up and unleashes pain. Then it hides again. The PC combat goal is to locate and interfere with the lurker, or ready attacks for when it pops up, as it is relatively fragile.
This uses fancier optimization simply because 5e doesn't really support this playstyle for PCs.
...
For a Skirmisher, a Monk isn't a bad choice. It has a back-10 problem (damage caps off) in baseline 5e, but we can fix that with multiclassing or careful choice of subclass. (Monsters which don't get tougher from level 10 to 20 are booorrrriinng).
Like, way of Mercy can turn a 3 Ki into 3 extra attacks (flurry), another 3 Ki into 3 extra damage boosts. But this is 6 Ki: you are seriously rate limited in burning Ki to boost your effectiveness. Focused Aim helps: burn a few more Ki, but again we are limited; on up to 30% of attacks, burn an average of 3 Ki to boost accuracy by +6. With 4 attacks/turn (EA, MA, Flurry) that is another Ki/turn, boosting our max consumption up to ... 9 Ki over 3 turns.
By L 11 we run out of things to dump Ki into in a 3 round combat and bigger unarmed damage dice only adds +1 damage per attack and takes 4 levels of Monk class to get. I mean, there is stunning strike, but we don't want monsters chain-stunning PCs.
Doing a MC smorgusborg is a choice? Like, Fighter 2/Gloom 3/Rogue 1/Barbarian 2 or whatever: All provide sources of damage boost.