В целом, это действительно так, чтобы поддерживать обратную совместимость. Обратите внимание, что совместимость также должна сохраняться на уровне байт-кода, а изменение типа возврата изменяет байт-код. Таким образом, в общем случае, если есть какие-либо подклассы, которые, возможно, переопределили данный метод, переход к ковариантному типу возврата приведет к поломке этих классов.
С Graphics2D
является абстрактным, он, очевидно, предназначен для подкласса, поэтому применяются вышеуказанные рассуждения.
Java Generics and Collections, хотя основное внимание уделяется общей точке зрения, содержит обсуждение ковариантного переопределения в разделе 8.4.