Up, up and away in a Retro Rocket
I don't like that the FuselageSections silently discards out of
bounds values, throwing an exception would be better.
Maybe there are shorter ways, but Fuselage can use AddRange as
well:

if (diamondShape)
{
    fuselage.AddRange(upDesigns);
    fuselage.AddRange(downDesigns);
}
else
{
    fuselage.AddRange(downDesigns);
    fuselage.AddRange(upDesigns);
}

wantDiamond can just be

bool wantDiamond = sections % 2 == 0;


and that (foo ? true : false or the reverse) is something I'll
always fix if I see it somewhere.
ToString can just be

return String.Join(Environment.NewLine, rocketPartsList);


instead.
Nose, Booster can all just create a copy with the List
constructor, i.e.

return new List&lt;string&gt;(BoosterParts);


and so on.


Otherwise looks fine; if it was actually part of a larger program I'd
move the parts itself into classes and have them output (ToString)
themselves instead.