Понятно, что в общем случае new Map() гибче, поскольку позволяет различать числовые и строковые ключи, а также использовать ключи любых типов, в том числе ссылочных.
Но что если ключом всегда является строка?
Очевидно, что у объекта куда более компактное обращение к свойствам по свойствам по сравнению с картой - квадратные скобочки, а не вызовы методов, соответственно оказываются применимы операторы в духе ++ и +=.
У пустого объекта {} есть всякие штуки в прототипе типа toString и __proto__, что мешает полноценному его использованию в качестве словаря, но Object.create(null) этих недостатков вроде бы лишён. По скорости объект со словарём я никогда не сравнивал, хотя, наверное, стоило бы.
В общем, на какие критерии стоит обратить внимание при выборе между ними и что скорее всего лучше использовать?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости