интерфейс - это считай контракт.
публикуя его (даже самому себе) программист говорит, какие внешние методы/св-ва имеет объект.
Это нужно для планирования взаимодействия ещё не существующих будущих частей.
Протектеды приваты и прочее совершенно не интересуют на этом этапе никого, так как это будет касаться только классов реализующих конкретный интерфейс.
Главное что во вне вытащены необходимые заранее спланированные ниточки, которые гарантировано присутсвуют в реализующих интерфейс классах.
Как только вы думаете про протектеды в интерфесе, вы начинаете спускаться вниз по абстракциям к реализации. Если вам так нужна кодовая дисциплина, можете сделать базовый класс с пустыми запланированными ротектед методами, а-ля интерфейс девелопер тулкит, но только после того как спланировали работающий интерфейс и без протектедов. И после этого просить использовать только его в разработке как базовый, но это противоречит всей парадигме, где жёстко прописывается взаимодействие, и никак не ограничивается реализация и область применения