Хороший обзор лучших практик. Еще одна рекомендация – никогда не требовать "новое" ключевое слово. Использование «нового» требует знания внутреннего устройства вызываемой фабрики объектов. Это также предотвращает рефакторинг фабрики способом, который не требует «нового», потому что это нарушит весь существующий код!

Я понимаю, что в ваших примерах слово «новый» используется главным образом для иллюстрации стилей параметров…

new Character(…)

Однако в идеале это должно быть написано…

var foo = Character(…)

Когда это применимо, фабричные функции могут самостоятельно создавать экземпляры, например…

function Character(args) {
  if (typeof this !== Character) {
   return new Character(args)
  }
  ...

Это было рекомендовано в течение многих лет, и я последовательно следую ему. Однако большинство разработчиков, которых я знаю, не следуют ему или даже не знают о нем! Поэтому я регулярно делюсь/продвигаю его вместе с другими передовыми практиками, которые вы перечисляете.