There's a memory cost to every variation between characters in a scene; depending on how optimized the character loader/renderer is, and how big of a variation we're talking about, it could cost as much as two entirely different characters.
Going to gloss a lot of technical details, and the not insignificant asset creation cost, but here's the outline of the runtime costs:
There's a cost per archetype loaded ("hurlock", "genlock bolter", "shriek"), and there's a cost per instance (current animation state, stats table, active effects, etc etc etc etc). Things like meshes and textures (and therefore faces) typically get bundled into the archetype cost, because we want to minimize the per-instance cost. Say we lay out our memory budget so we can have 3 creature archetypes loaded at a time (archetype budget; ie. you can fight three different kinds of things at once), and a total creature count of 8 (instance budget). We can have a fight with 5 hurlocks, 2 genlock bolters, and a shriek.
If we have to account for each hurlock potentially having a different face, in the worst case then each hurlock is both an archetype and an instance - we can have a fight with 2 hurlocks and a shriek, or 3 hurlocks. Not nearly as much headroom to make interesting encounters. Let's say we can shove the face override data into the per-instance data so we're not making unique archetypes: that's going to make each instance cost more, so now we can only have 6 or 7 individual creatures running simultaneously. Better, but still not as much room for interesting fight design.
It also follows that if we're already paying a unique creature cost for a plot character or one-off, we can probably give them a unique head/face for "free". "Free" means we still have to pay the asset creation cost and the diskspace cost of the asset, but we've determined it's worth giving them a whole new archetype so that that character has a signature look. For a cheaper character, we can just give them a unique name (cost: strings).
Because everything is interconnected, if we know that the choice is between every soldier in the Wherever army having the same face or having the same helmet, the latter seems a lot less jarring. Maybe we decide that they all have fancy helmets as a stylistic choice, informed by the limitations of the tech.
YMMV, every engine is different, every game team spends their resources in different places with different priorities. Game development is compromise and trade-off. "Lazy" ain't got nothing to do with it.