What I'm curious to know is, how did you avoid spamming attacks in 3e combat, especially if you were not a spellcaster of some sort? I know that theoretically, you could bull rush, disarm, trip, fight defensively, etc. but how varied were the PCs' combat actions in actual gameplay?
Well, I think that depended upon the PC and the player behind it. One way to avoid staleness is to design multifaceted PCs.
One of my buddies is blissfully happy to use a big weapon with the Power Attack Feat tree, PC after PC. Not much variation possible, there.
In my case, each one of my PCs is a different person, with different combat techniques. Some have been just like my buddy's. Others resembled classic archers- stay at range, because all you have besides your bow is a dagger.
Some of my PCs carried a variety of weapons for different situations or weapons that were inherently flexible in their tactical applications, like the Kusarigama.
Or I'd go down an unusual route- like my Wiz/Warrior who did 2wf with a Whip and Pick, my Dex-based Polearm-wielding Githzerai monk with the Combat Reflexes feat tree, my Halfling Barbarian with claw bracers, spiked armor and trog-stink grenades, or my scale armor-wearing, Maul using, Dragon breath breathing Sorcerer.
If my PC was smart, I'd try to optimize battlefield control by using terrain, intervening creatures, or ranged or alchemical weapons if he had the dex for it. If not, I'm probably running a basic brute.
IOW, very frequently, my characters
DID bull rush, disarm, trip, fight defensively, etc. or the completely unusual. Sometimes, versus certain opponents, my PCs couldn't do anything effective at all, so I'd opt to guard another PC or a valuable resource.