Por que colocar uma string em um hash causa esse resultado? [duplicado]

Esta pergunta já tem uma resposta aqui:

Comportamento estranho e inesperado (desaparecendo / alterando valores) ao usar o valor padrão do Hash, por exemplo Hash.new ([]) 4 respostas

Estou trabalhando com o Ruby Koans para entender melhor o Ruby e o TDD. Cheguei à linha 93 no código emabout_hashes.rb e isso me confunde como seria introduzido no construtor padrão em vez do valor do hash. Por curiosidade, tentei usar a mesma coisa com uma string que o parâmetro do construtor e produziu um resultado semelhante.

Agora, minha pergunta é por que, seja qual for a chave que eu use, o mesmo objeto é recuperado e como eu colocaria um novo objeto na matriz em uma chave específica em um hash no método test_default_value_is_the_same_object?

def test_default_value_is_the_same_object
    hash = Hash.new([])

    hash[:one] << "uno"
    hash[:two] << "dos"

    assert_equal ["uno", "dos"], hash[:one] #why not ["uno"]?
    assert_equal ["uno", "dos"], hash[:two] #why not ["dos"]?
    assert_equal ["uno", "dos"], hash[:three] #why not []?

    assert_equal true, hash[:one].object_id == hash[:two].object_id
  end

def test_default_value_with_block
    hash = Hash.new {|hash, key| hash[key] = [] }

    hash[:one] << "uno"
    hash[:two] << "dos"

    assert_equal ["uno"], hash[:one]
    assert_equal ["dos"], hash[:two]
    assert_equal [], hash[:three]
end

questionAnswers(2)

yourAnswerToTheQuestion