Since I started writing scenarios for Starmada and BattleTech I've been doing a lot of thinking about design principles for these things. Here are my insights so far:
1) Terrain is nice, but don't make the scenario about the terrain. Sometimes a blank starmap or the Battletech basic maps are sufficient.
2) Only have duplicate units when absolutely necessary. No one else wants a BattleTech scenario with a lance of Urbanmechs or Star Trek fight with three Saladin class destroyers. Tracking which control sheet corresponds to which unit is a pain in the butt and I want no possibility of mistaking your Shadow Hawk for the enemies' SHawk.
3) Victory conditions should be interesting, but simple. Big "+5 VPs for this", "-3 VPs for that" charts are a big pain to balance properly.
4) A little background fluff really spices up an otherwise plain scenario.
5) In theory people are piloting these Mechs and starships. Try to keep that in mind.
6) A good "historical" scenario does not always make a good game.