Допустим, у меня есть статичное множество, в который в будущем я не намерен добавлять ещё элементы. Стоит ли мне в таком случае предпочесть использовать интерфейс Iterable вместо интерфейса Set?
Этот вопрос у меня возник после того, как увидел, что в исходном коде Google Guava (на Github) использовано вместо интерфейса Set интерфейс Iterable.
Я заметил, что для использования Iterable её не надо напрямую импортировать, а для Set — нужен импорт.
Какие преимущества даёт использование Iterable вместо Set?

Те, кто пишут библиотеки, используют в качестве параметров методов самые общие интерфейсы/классы, которые позволяет реализация метода. Для того, чтобы Вы, как пользователь библиотеки, не задумывались над тем, что ваш Set нужно превратить в List или Collection, чтобы передать в гуаву. Вы можете использовать все, что душе угодно и одинаково передавать в методы либы. Т. к. там внутри метода, разработчики либы предусмотрели это и им неважно, что вы по факту передадите - Set, List, Collection, ArrayList, LinkedList, HashSet, TreeSet и т. д. Им достаточно перечисления.
Но использовать Iterable в качестве типа переменных в своем коде? Зачем? Нафига себя так ограничивать-то. Что вы с этим одним методом перечисления делать будете?
Ты любишь по старине проехаться. Гугл сначала написал говнаво, потом долждался Java 8, потом понял что яву уже ничем не спасти и перешли на скотлин и судится с бесплатной явой на миллиарды Ну Iterable это одно а Set совсем совсем другое

Отличаются они логикой использования. Если нужно только перебирать элементы - используется Iterable, если нужна неповторяемость элементов со всеми вытекающими - используется Set, который имеет в том числе функциональность Iterable.
Преимущество, что в будущем туда можно будет запихнуть любой класс реализующий интерфейс итерабл
(Код не читал)
Ты вообще понимаешь, что такое Set, а что такое Iterable? Как можно сравнивать АБСОЛЮТНО разные вещи, предназначенные для решения разных задач?
преимущество надо искать в том, как работает сама реализация, если и там и там одно и то же, а Collectors.toSet вернет HashSet, то и там и там у вас HashSet, как не крути, оптимизировать импортами вы ничего не сможете. Если вам нужен Set, а вы в него собираете, то обычно и нужна работа, как с Set, а не как с чем-то Iterable. Иначе тогда почему не собираете с List. Если вы разработчик библиотеки, то вы иногда хотите ограничить пользователя библиотеки в том, что он может делать, если в гуаве так написали, значит хотели чтобы вы просто могли пробежаться по ней циклом for или forEach