Método de sobrecarga equivalente ¿por qué es necesario?

Busqué un código JAVA hecho por Google, y encontré el ImmutableSet:http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/ImmutableSet.html

Implementaron el método de () con varias otras formas:

public static <E> ImmutableSet<E> of(E e1, E e2);
public static <E> ImmutableSet<E> of(E e1, E e2, E e3);
public static <E> ImmutableSet<E> of(E e1, E e2, E e3, E e4);
public static <E> ImmutableSet<E> of(E e1, E e2, E e3, E e4, E e5);
public static <E> ImmutableSet<E> of(E... elements);

Revisé la implementación que está aquí:https://code.google.com/p/google-collections/source/browse/trunk/src/com/google/common/collect/ImmutableSet.java

Hay un método de creación con la siguiente firma:

private static <E> ImmutableSet<E> create(E... elements)

que envuelve el

private static <E> ImmutableSet<E> create(Iterable<? extends E> iterable, int count);

método. Los métodos públicos simplemente pasan los parámetros al método firmado (E ... elementos) que finalmente llama al otro método de creación.

Supongo que el público de métodos con recuento fijo de parámetros es innecesario ya que tenemos el método de (E ... elementos).

Mi pregunta es, ¿por qué hicieron eso así? ¿Actuación? ¿O es un patrón?

Gracias.