Да тут не в reduce дело.
Можно и без него. Проще, но чуть длиннее.
let meta= [
{ name: 'surname', title: 'Фамилия', type: 'text' },
{ name: 'name', title: 'Имя', type: 'text' },
{ name: 'secondName', title: 'Отчество', type: 'text' },
{ name: 'phone', title: 'Телефон', type: 'text' },
{ name: 'phone2', title: 'Телефон', type: 'text' },
{ name: 'mail', title: 'E-mail', type: 'text' },
{ name: 'address', title: 'Адрес', type: 'text' }
];
let contact= { "name": "Test", "surname": "FirstFamily", "phone": 21254 }
const fnr = (obj, meta) => {
const o = {}
for (const {name} of meta) {
o[name] = '';
if (name in obj) o[name] += obj[name];
}
return o;
}
console.log(fnr(contact, meta))