How to reuse the same custom template in Ajax callback
The replacement for theme() is a build array with a '#theme' key, as you already have for the page. 

In Drupal 8 pass this or the other build array from your question unrendered to an ajax html command, because render() in custom code should be avoided if possible:

$build = [
  '#type' =&gt; 'container',
  '#attributes' =&gt; [
    'class' =&gt; ['my_top_message'],
  ],
];

$build['content'] = \Drupal::entityTypeManager()
  -&gt;getViewBuilder('node')
  -&gt;viewMultiple($nodes, 'full');

$response = new AjaxResponse();
$response-&gt;addCommand(
  new HtmlCommand('.result_message', $build)
);
return $response;