I think that a single ParametricPlot3D cannot mix surfaces and lines. You can do it with two separate plots combined with Show:
M3 = Manipulate[
Show[ParametricPlot3D[{Shroud}, {\[Theta], -\[Pi]/2, \[Pi]/
2}, {\[Lambda], 0, \[Pi]/2},
PlotStyle -> {{Blue, Opacity[opacity]}, {Blue, Thick}},
PlotRange -> All, ViewPoint -> {3, 4, 2.5}, Axes -> True,
Boxed -> False, FaceGrids -> None, AxesOrigin -> {0, 0, 0},
AxesLabel -> {None, None, None}, ViewPoint -> {10, 5, 10}],
ParametricPlot3D[{Spikes}, {\[Lambda], 0, \[Pi]/2},
PlotStyle -> {{Blue, Thick}, {Blue, Opacity[opacity]}},
PlotRange -> All, ViewPoint -> {3, 4, 2.5}, Axes -> True,
Boxed -> False, FaceGrids -> None, AxesOrigin -> {0, 0, 0},
AxesLabel -> {None, None, None},
ViewPoint -> {10, 5, 10}]], {opacity, .3, 1}]