Qual é a diferença entre Collections.unmodifiableSet () e ImmutableSet of Guava?

JavaDoc deImmutableSet diz:

UnlikeCollections.unmodifiableSet, que é uma visualização de uma coleção separada que ainda pode ser alterada, uma instância dessa classe contém seus próprios dados privados e nunca será alterada. Essa classe é conveniente para conjuntos finais estáticos públicos ("conjuntos constantes") e também permite que você faça facilmente uma "cópia defensiva" de um conjunto fornecido à sua classe por um chamado

Mas oImmutableSet ainda armazena referência de elementos, não consegui descobrir a diferença paraCollections.unmodifiableSet(). Amostra

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

Alguém poderia explicar isso?

questionAnswers(1)

yourAnswerToTheQuestion