Apenas para fins informativos, posso dizer que a criação do BigDecimal que volta do banco de dados é feita pela implementação do driver JDBC proprietário do método 'getBigDecimal' da subclasse 'ResultSet' específica do banco de dados.
Descobri isso percorrendo o código-fonte do Hibernate com um depurador, enquanto tentava encontrar a resposta para o meu próprio pergunta .