Não vi vantagem nenhuma nesse caso.
O padrão Builder é mais usado para desacoplar a forma que um objeto complexo é construído da forma como ele é representado. Nesse caso, o objeto nem é complexo. Bem pelo contrário, é bastante pequeno e coeso, tanto que a classe não sofre alteração a vários anos.
Também não vi vantagem em fazer um Builder que nada mais é do que uma interface estática para o construtor. Iria estar tão cheio de adds quanto a classe de Hash está cheia de construtores hoje em dia, só que eu teria o inconveniente de ter duas classes para manter ao invés de uma só.
Você poderia me dizer uma única vantagem de usar esse padrão nesse caso, que não fosse “estar no padrão”?
E onde simplifica a invocação? O exemplo que vc demonstrou é tão complexo quanto (embora nenhum dos dois códigos seja realmente complexo).
Anyway, vejo mais sentido em usar o padrão strategy no futuro, caso eu fosse implementar mais de uma política de hash. Mas até hoje nunca precisei disso.