Потому что программисты любят организовывать вещи. Даже если все методы протокола являются необязательными, все же будет хорошей формой официально объявить, что ваш класс реализует этот протокол, если он будет использоваться в качестве делегата. Делегирующий класс может также потребовать, чтобы ваш класс реализовал протокол - это означает, что если вы реализуете методы, но не объявляете, что реализуете протокол, вы получите предупреждения компиляции.