An alternative is to use $Post to post-process output automatically as it is generated.
For instance, the following outputs anything with the head Graphics in a style "centeredOutput", which could be defined in whatever manner one wants.
centerGraphics[g_Graphics | g_Graphics3D] := CellPrint@ExpressionCell[g, "centeredOutput"]; centerGraphics[x_] := x; $Post = centerGraphics One could center the graphics also by wrapping it in Pane:
centerGraphics[g_Graphics | g_Graphics3D] := Pane[g, Alignment -> Center, ImageSize -> Full]; Update: From a suggestion by Mr.WizardMr.Wizard, with this definition, formatting the graphics could be handled more gracefully by setting $PrePrint = centerGraphics and $Post =. (or leave $Post unset). Then the value of Out will be the graphics instead of the Pane.
Notes (updated) --
Any existing graphics would have to be reevaluated.
One should be aware that $Post affects the output value. For example, after executing Plot, the head of % would be Cell, if using the first definition of centerGraphics.
One can circumvent $Post by wrapping the graphics in a head that does not affect typesetting. For instance, Defer@Evaluate@Plot[Sin[x], {x, 0, 10}] would be printed in a normal "Output" cell but the graphics will still be centered.
Because of this, if one wishes to Deploy graphics, one might want to add a rule to centerGraphics to handle Deploy. For example, centerGraphics[g : Deploy[Graphics[__]] | ...] := ...
One need not create a special style. One can set options directly in ExpressionCell, such as with this body for the definition of centerGraphics:
CellPrint@ExpressionCell[g, "Output", TextAlignment -> Center]