Відповіді:
@Override спочатку не був у мові. Коли з'явилася потреба додати її, було легше використовувати загальний механізм (анотації), ніж додати нове ключове слово до мови. Додавання нового ключового слова - це завжди несумісна зміна, оскільки воно може порушити програми, які використовують ці слова як ідентифікатор.
У мовах, які додають маркер переопределення прямо з першого дня, це досить часто ключове слово (приклади "Котлін" і "Скала");
default
вже не було зарезервованого ключового слова (використовується в операторах переключення) - вони просто додали для нього нове використання. Також є кілька ключових слів, які зараз нічого не роблять, але зарезервовані для подальшого використання (const, goto) - див. JLS §3.9
enum
що додане ключове слово порушило б старіший код. Більш ламаючи ключові слова тут: stackoverflow.com/questions/16506411
Вам не потрібна анотація @Override, щоб фактично змінити поведінку; Це примітка, оскільки це просто додавання деякого контексту наміру методу для компілятора, а не зміна самого методу.
Без анотації ви, можливо, маєте намір змінити функціональність, але випадково не зробите це (використовуючи трохи інший підпис). Додавання примітки вказує компілятору створити помилку, якщо цей спосіб насправді не переважає.
Як такий, він має ідеальний сенс як анотація.