В основном потому, что Iterable
может никогда не закончиться (то есть hasNext()
вернет true навсегда).
Кроме того, чтобы сохранить соответствие, вы можете подумать, что Collection
может добавить все элементы другой коллекции, но Iterable
не обязательно является коллекцией (это может быть что угодно, например, оболочка ResultSet
для экземпляр).