Você sempre deve anotar métodos com, @Override
se estiverem disponíveis.
No JDK 5, isso significa substituir métodos de superclasses, no JDK 6 e 7 significa substituir métodos de superclasses e implementar métodos de interfaces. O motivo, como mencionado anteriormente, é que permite ao compilador detectar erros nos quais você acha que está substituindo (ou implementando) um método, mas na verdade está definindo um novo método (assinatura diferente).
O exemplo equals(Object)
vs. equals(YourObject)
é um caso padrão em questão, mas o mesmo argumento pode ser feito para implementações de interface.
Eu imagino que a razão pela qual não é obrigatório anotar métodos de implementação de interfaces é que o JDK 5 sinalizou isso como um erro de compilação. Se o JDK 6 tornasse essa anotação obrigatória, a compatibilidade seria retroativa.
Não sou usuário do Eclipse, mas em outros IDEs (IntelliJ), a @Override
anotação é adicionada apenas ao implementar métodos de interface se o projeto estiver definido como um projeto JDK 6+. Eu imaginaria que o Eclipse é semelhante.
No entanto, eu preferiria ver uma anotação diferente para esse uso, talvez uma @Implements
anotação.