1) У вас могут быть служебные методы, используемые несколькими классами в вашем пакете, которые никогда не должны вызываться извне. Или они могут понадобиться только одному классу, но этот класс настолько велик, что вы хотите переместить некоторые методы в другой класс для удобства обслуживания.
2) Мне бы пришлось попробовать (извините, я сейчас выбегаю из двери), но вы могли бы эффективно сделать это, объявив защищенный конструктор по умолчанию в интерфейсе.