its a matter of personal taste.
I was thinking of introducing one enemy type each level, and cycle the level type
you can have you cake and eat it too!
make it level based. when you run out of levels and units, switch over to "endless mode"
So in that sense, an endless game may require less work to implement.
correct.
i did a realtime wargame called "Armies of Steel". if you turned on one #define in the source code, it created "Combat Zone", a realtime arcade wargame with levels. Each level introduced new unit types or terrain types. The game had 20 levels. When you got to level 20. you were playing the most basic scenario in Armies of Steel.
some games (like pinball) are more suited to "high score" type play. many are not.
on the other hand, SIMTrek / SIMSpace (a star trek flight sim) is actually a "high score" game - complete as many missions as possible without failing 3 mission total (3 strikes you're out - reassigned to shore duty). there high score doesn't get dull because its a strategic game of energy management inside a 3d flight sim in a living open gameworld.
" high score" is a simple kind of goal. if the game is kind of simple as well, it will get old quick.
also, best possible high score is a single unchanging goal that the player approaches asymptotically but never quite reaches.
the fact that its just a single unchanging goal might be why it gets old fast. one you've got the hang of the game, you don't make much progress on improving your top score.
the randomness in pinball may be why it works well there. no matter how good you are, luck can still mean the difference between a gutter ball and 1,000,000 points. so you never know if the next quarter you drop will be the best game of your life. sort of like playing slots: "just - one - more -pull !.