Значит ли это, что все методы следует делать виртуальными?
Нет, не значит. Если разрешить переопределять все, то можно логику поломать. А если Вы пишите библиотеку и разрешите все и вся менять? Переопределять можно разрешать в местах, где используется стратегия: где есть обобщенный класс и наследуемые классы могут реализовывать собственную логику.
Если вдруг, в процессе разработки, возникнет необходимость разрешить переопределение, то дописать override недолго.