В C # все члены интерфейса должны быть открытыми, поэтому это не позволит вам добавлять какие-либо модификаторы видимости в объявления членов. Таким образом, ключевое слово public является избыточным и не требуется (например, если вы включите его, вы получите ошибку компилятора).
Интерфейс - это контракт, в котором говорится, что вы предоставите все функциональные возможности, указанные в определении интерфейса. Если бы вам было разрешено иметь закрытых членов в интерфейсе, вы бы не раскрывали эту функциональность (и поэтому нарушали бы контракт).