You could map each parent to an array of children and then flatten it to obtain a list of parent+child :
var aggregate = _(parents).chain().
map(function(parent) {
// no child case
if ((!parent.children) || (!parent.children.length))
return _.extend(_.omit(parent, 'children'), {child: null});
// array of parent+child
return _.map(parent.children, function(child) {
return _.extend(_.omit(parent, 'children'), {child: child});
});
}).flatten().value();
And a demo http://jsfiddle.net/nikoshr/8HAVJ/