This is more of a PHP question then a WordPress one but the answer is simple, just use PHP’s output buffer by wrapping the first code snippet eg:
//create a function for the filters
function get_filters(){
$terms = get_terms('YOUR-TAXONOMY');
if ( $terms ) {
ob_start();
?>
<ul id="portfolioFilter">
<li class="filter" data-filter="all">All</li>
<?php foreach ( $terms as $term ): ?>
<li class="filter" data-filter="<?php echo $term->slug; ?>"><?php echo esc_html($term->name); ?></li>
<?php endforeach; ?>
</ul>
<?php
return ob_get_clean();
}
return false;
}
//and then call that function in your second snippet:
return
'<div class="listings clearfix">'
. '<li class="filter" data-filter="'. $term->slug .'>'. esc_html($term->name) .'</li>'
. '<div class="inner-div preview-wrap">'
. '<div id="portfolio-wrap">'
. '<div id="portfolio_thumbs" class="columns-3">'
. '<ul id="grid" class="sortablePortfolio clearfix">'
. get_filters()
. '</ul>'
. '</div>'
. '</div>'
. '</div>';