emplace_back не помещает переданный объект в вектор, а создаёт новый объект сразу внутри вектора. В качестве аргументов emplace_back принимает параметры конструктора создаваемого объекта.
Перечитал еше раз вопрос и понял, что я не на то отвечаю.
По поводу двух версий push_back Howard Hinnant (член комитета по стандартизации C++)
ответил, что проще было добавить новую функцию, чем изменять существующую.