In reply as to whether the Show paradigm is a serious inconvenience:
I have always thought that graphics would be much easier and more intuitive if it was based on the idea that everything in graphics is a graphics primitive (as well as an expression.) So, for example, if you draw a curve or a surface it will be returned as an object that works as a primitive at the Graphics level instead of the Show level. Graphics primitives can be easily manipulated individually and combined. It's easier to understand options if one understands that some of them apply to what is being drawn and others to the overall plot appearance. It is difficult for many users to understand how options are picked up in the Show statement. Also with Show one has to jump back and forth to the Graphics level, or use Epilog. Then what happens if you use Epilog in two Plot statements? Consider the following rather artificial example.
Show[
Plot[Sin[x], {x, 0, 2 \[Pi]},
Epilog -> Text["Sin", {3 \[Pi]/4, Sin[3 \[Pi]/4]}, {-1, -1}]],
ParametricPlot[{x, Cos[x]}, {x, 0, 2 \[Pi]}, PlotStyle -> Orange,
Epilog -> Text["Cos", {7 \[Pi]/4, Cos[7 \[Pi]/4]}, {1, 1}]]]
The second Epilog option is lost. Sure, we were warned that the non-default (which are those?) options are concatenated. But does the average user notice that, or is he aware of the implications? He could include the second Text statement in the first Epilog, but is that intuitive since it goes with the other curve? He could use level jumping between Show and Graphics. Or he could put them both at the end. But if the plot has many primitives in it then the Epilog statement becomes the tail that wags the dog, and things that go together are separated. If he wants to keep things together that go together then he has to use lots of Graphics wrappers. Wouldn't something like this be much simpler and more intuitive?
Graphics[
{Draw[Sin[x], {x, 0, 2 \[Pi]}],
Text["Sin", {3 \[Pi]/4, Sin[3 \[Pi]/4]}, {-1, -1}],
ParametricDraw[{x, Cos[x]}, {x, 0, 2 \[Pi]}, PlotStyle -> Orange],
Text["Cos", {7 \[Pi]/4, Cos[7 \[Pi]/4]}, {1, -1}]},
Frame -> True]
In the Help for Show it says "Options explicitly specified in Show override those included in the graphics expression." Then what about the following?
Show[
Plot3D[Sin[x y], {x, 0, \[Pi]}, {y, 0, \[Pi]},
PlotStyle -> ColorData["Crayola"]["Chestnut"]],
ParametricPlot3D[{x, y, Sin[x] Cos[y]}, {x, 0, \[Pi]}, {y, 0, \[Pi]},
PlotStyle -> ColorData["Crayola"]["GrannySmithApple"]],
Lighting -> "Neutral"
]
Hmm, will the second PlotStyle option be picked up, since the second Epilog option wasn't? Yes it will because it's not a default option. Everybody knows that. Right. The Lighting option is definitely not picked up by the surfaces generated by the two plot statements. And that is because Mathematica automatically builds Lighting->Automatic into the primitives of the surfaces. If you want a single specified Lighting for the entire plot (the most common case) you have to specify it in each of the individual plot statements. Who would have thought? I think any serious person would call that inconvenient.
There could still be the customary set-piece plots for common types of graphics but they wouldn't have to cover everything because users could always repair to the primitive level if they wanted highly customized graphics.