Может быть, интересный случай использования - ребята из спецификации Servlet 3.0 много боролись с этой проблемой. Самые ранние предложения покончили с такими интерфейсами, как, например, ServletContextListener и полагался исключительно на аннотации.
Как вы указали, безопасность типов может быть проблемой здесь. Неловко догадываться, какой должна быть точная подпись метода.
Среди прочего, по этой причине, предложение было жестко закрыто сообществом, и они сохранили интерфейсы. Теперь необходимую регистрацию в web.xml можно выполнить с помощью аннотаций, но определение методов слушателей по-прежнему осуществляется через интерфейсы.
Аннотации имеют свои преимущества. Мелкозернистые слушатели - это действительно одно. Вы не можете всегда противостоять этому с помощью мелкозернистых интерфейсов одного метода. Предположим, у меня есть (слушатель) интерфейс с 6 методами. Большинству людей нужен только 1 метод, поэтому вы решаете разбить его на 6 интерфейсов, каждый из которых имеет один метод. Теперь я счастливый парень, которому на самом деле нужны все 6 из них. В моем классе я должен теперь объявить, что я реализую 6 интерфейсов.
Я почти уверен, что многим это не понравится.
С аннотациями вы всегда можете смешивать и подбирать точное количество, которое вам нужно.
Кроме того, для аннотаций тривиально использовать несколько методов в одном классе. Вы не можете сделать это с интерфейсами. Существует только 1 метод, который реализует метод из интерфейса, не больше и не меньше.
Еще одно «преимущество» аннотаций состоит в том, что, поскольку они точно не определяют, к чему они применяются, можно поддерживать дополнительные сигнатуры методов позже. С интерфейсами вам придется добавить другой интерфейс. В моем примере с 6 интерфейсами, предположим, вы позже решите, что вам также необходимо поддерживать методы с 1 дополнительным параметром, вам потребуется 6 дополнительных интерфейсов. Это может сложить быстро.
Гибридным решением между интерфейсами и аннотациями может быть возможность для аннотаций указывать одну из более необходимых сигнатур методов. Если такая подпись будет определена, аннотация может быть применена только к методу, который соответствует ей.