В сложных случаях надо обращаться к первоисточнику:
Chapter 8. Classes, где сказано:
A class may not at the same time be a subtype of two interface types which are different invocations of the same generic interface (§9.1.2), or a subtype of an invocation of a generic interface and a raw type naming that same generic interface, or a compile-time error occurs.
This requirement was introduced in order to support translation by type erasure (§4.6).
А если неформально — то смысл тИповых параметров в том, чтобы статически сУзить допустимые типы для разных экземпляров отного и того же класса, так, чтобы у разных экземпляров сужение было разным.
В приведенном Вами коде используется два разных сужения: и :
class Employee implements Payable<Employee> {}
class Hourly extends Employee implements Payable<Hourly> {}
которые невозможно совместить в одном экземпляре. Стирание тут при том, что если бы его не было, можно было бы попытаться расклеить интерфейсы и требовать двух реализаций каждого метода (имхо, плохая затея), а так у нас только один метод doIt и две разных сигнатуры.