Самый очевидный для меня резон написания синглетона на месте статического тулкита — это тесты. Выделив интерфейс синглетона затем его инстанс переменную легко подменять на mock реализацию этого интерфейса в тестах. (вариант — просто наследовать класс и переопрделить mock реализацию нужных методов, но судя по вашему примеру кода это не тот случай). Кроме того синглетон позволяет легко добавлять логику в конструктор — ну например инициализацию кэша. Это как задел на будущее. Да, самый очевидный ответ — ребят просто перло писать приватные конструкторы и никакой мысли у них не было.