After a bit of style sheet spelunking I believe I have a solution.
One reads in Core.nb under the FormatType Styles section:
The cells below define styles that are mixed in with the styles of most cells. If a cell's FormatType matches the name of one of the styles defined below, then that style is applied between the cell's style and its own options. This is particularly true of Input and Output.
From this it becomes clear why the styles one creates for Input and Output are not respected. That leads me to my proposed method. The template for the private style sheet is as follows:

Key in the options for the top cell, placed above the base definitions cell, is:
FontFamily -> Inherited
However one should start with the original definition from Core.nb and add/change FontFamily -> Inherited or important settings such as InputAutoReplacements will be lost. You can use this code to generate the complete Cell needed:
CellPrint @ Cell[StyleData["StandardForm"], ##] & @@ (CurrentValue[{"StyleDefinitions", "StandardForm"}] /. (FontFamily -> _) :> (FontFamily -> Inherited))
(Evaluate this in a standard Notebook, then copy and paste the result at the very top of the Style Sheet.)
This changes the way that the "Input" and "Output" styles work. Now you create font style cells for both, e.g.:
Cell[StyleData["Input"], FontFamily -> "Courier" ] Cell[StyleData["Output"], FontFamily -> "Trajan Pro" ]
And prestidigitonium!

StandardForm, but that changes bothInputandOutput. Is there no way to change justOutput? (And what's theOutputstyle for if it has no effect on output?) $\endgroup$Core.nbdefinesDefaultFormatType -> DefaultOutputFormatTypefor the output style and this is theStandardForm. You can setDefaultFormatTypeto some other *Form and change that instead, because modifyingStandardFormwill also change the input sytle. $\endgroup$StandardFormto effect change in"Output"(and"Input") before; that is what I am dissatisfied with. Sorry for unintentionally disparaging your answer! $\endgroup$