¿Cuál es la diferencia entre Collections.unmodifiableSet () e ImmutableSet of Guava?

JavaDoc deImmutableSet dice

Diferente aCollections.unmodifiableSet, que es una vista de una colección separada que aún puede cambiar, una instancia de esta clase contiene sus propios datos privados y nunca cambiará. Esta clase es conveniente para conjuntos finales estáticos públicos ("conjuntos constantes") y también le permite hacer fácilmente una "copia defensiva" de un conjunto proporcionado a su clase por una persona que llama.

Pero elImmutableSet todavía almacena referencias de elementos, no pude encontrar la diferencia conCollections.unmodifiableSet(). Muestra

StringBuffer s=new StringBuffer("a");
ImmutableSet<StringBuffer> set= ImmutableSet.of(s);
s.append("b");//s is "ab", s is still changed here!

Podría alguien explicarl