That's kind of how Bungie does it, though. Halo 2 brought one new enemy type: Brutes. Elites, Hunters, Grunts, Jackals and the Flood forms all returned, just re-tooled and expanded.
Halo 3 had no new enemy species or factions, just updated classes within the same factions and races. (Along with new AI behaviors.)
Bungie tends to establish a universe and then flesh it out as they go. This time they seem to be going all in on the Cabal, with the Vex next on deck.
(buggers were added in Halo 2 as well)
To add onto this from a development perspective, the reason you rarely see a lot of new enemies in a continual franchise game is you generally have a list of known roles to fill, and then you fill those roles with enemies.
You get to the sequel, and now all your roles are filled. Whoops. Any new enemies will be redundant / have severe overlap to others.
Brutes were able to slide into Halo 2's DMs (sorry) because Elites were absent as enemies for half of the game since you were playing as one, but they made them beserkers. Buggers had an easier time of it since they were an air enemy, which Halo didn't have at that point, so they had the "can engage the player in full 3D" to help their introduction.
Then Halo 3 rolls around, and since it both starts RIGHT after Halo 2 and has a lot of Halo 2 in it, no new enemies. Elites are out of the sandbox entirely because now they're allies. Bungie didn't like the Brutes execution in Halo 2 and came back and rebuilt them entirely, so they spent just as much labor as they would have had on a new enemy, and the result was pretty good.
Reach rolls around. They add Skirmishers which are quasi-redundant to Jackals both canonically and sandbox-y, and the Brutes were originally only supposed to be in one mission so they were (intentionally) a super prototypical version of them, but otherwise it's pretty much the same enemy palette, for the reasons I state above.