3.5's combat was highly based around:
1. Prepared casters using the right spells to "solve" encounters -- Glitterdust and Invisibility purge "solves" invisibility. "Fly" solves flying enemies. "Wind Wall" solves enemy arrows.
2. Beatsticks having a good enough build to handle all the cases that #1 can't handle. Ex: maybe the Druid doesn't have "Daylight" to counter the deeper-darkness the enemy Lich cast, but the Beatstick might have scent (Barbarian) or blindfight to handle the case anyway.
------
These spells and situations were so incredibly varied, and it really is fun to play with. Haste beats slow. Dimensional Anchor beats Dimension door. Etc. etc.
Pathfinder specifically made fighter-types deal incredible amounts of damage, ensuring that they'll be relevant. (Fighter Archer will almost certainly outdamage Wizard fireballs).
------
4th edition felt like... everyone was playing roughly the same thing. Wizards spell options were largely just damage, and not so interactive. You had nothing like the "Daylight vs Deeper Darkness", or "Force Cage vs Dimension Door", or "Invisibility purge vs Invisibility Sphere" system before.
So there just wasn't any real amount of "division of labor" going on in 4th edition. Everyone was basically a beatstick.
3.5 / Pathfinder had the issue that if two players played the same role (ex: a Fighter + Paladin), it felt redundant, and one of the players will feel left out.
------
Gloomhaven is probably a good description of 4E. But 3.5 / Pathfinder was more like DOTA or Overwatch. Players are in a team, and there's no class that can fulfill all roles. By subdividing the party's jobs between different players, everyone has something to contribute in the dungeon.
As long as the DM ensured that the party compositions were decently balanced and with less redundancy. (Even if two fighters were chosen, you can still play different roles with different weapons. Archer vs Beatstick for example).