A liability at a faster speed
As the general pace of the sport increased, a player selected mainly for his willingness to fight became harder to deploy without exposing a weak link at game speed, because that speed exists in every shift, not just the ones that turn physical. Coaches who could not trust a fourth-liner to keep up simply used him less, regardless of what the rulebook said about fighting.
That is a quieter explanation than the popular one about the league legislating fighting away, and I think it is closer to correct. The rules changed too, but a team that genuinely believed a pure enforcer won it games would have kept finding room for one.
A roster spot is not free
Every team carries a fixed number of forwards, and a player who offers almost nothing at five-on-five besides physical deterrence occupies a spot that could otherwise go to someone who can also kill a penalty, take a regular shift, or contribute offensively in a pinch. As analytics made the value of marginal roster spots more visible, that opportunity cost became harder to justify.
This is ultimately an economic argument as much as a stylistic one: teams did not decide fighting was wrong, they decided a full-time fighter was an inefficient use of a scarce and valuable asset, which is a much less romantic but more accurate story.
What actually replaced the role
The physical function the enforcer used to serve has not disappeared so much as dispersed across more players who can also play regular minutes — a heavier bottom-six rather than one designated specialist. That is a less theatrical solution and, in my view, a more efficient one, even if it removed a character type the sport's older highlight reels miss.
I understand the nostalgia. I do not think the nostalgia is describing a better version of the sport so much as a version that had not yet noticed the roster math.

