How to load a view via ajax without breaking ajax functionality?
After examining the ViewAjaxController.php ajaxView() function, I came up with the following solution, which seems functioning for me. I created an ajax endpoint which extends ViewAjaxController and sets the requested view and display in the Request object then calls the parent ajaxView() method.

1. Define the route

my_module.routing.yml

my_module.views_ajax:
  path: '/admin/views/{nojs}/{view_id}/{display_id}/{args}'
  defaults:
    _controller: '\Drupal\my_module\Controller\MyModuleViewAjaxController::ajaxView'
  requirements:
    _permission: 'access content'


2. Create the controller

src/Controller/MyModuleViewAjaxController.php

namespace Drupal\my_module\Controller;

use Drupal\Core\Ajax\AjaxResponse;
use Drupal\Core\Ajax\AppendCommand;
use Drupal\views\Controller\ViewAjaxController;
use Symfony\Component\HttpFoundation\Request;

/**
 * Class MyModuleViewAjaxController
 */
class MyModuleViewAjaxController extends ViewAjaxController {

  public function ajaxView(Request $request) {
    $view_name = $request-&gt;get('view_id');
    $display_id = $request-&gt;get('display_id');
    $dom_id = "{$view_name}__{$display_id}";

    $request-&gt;request-&gt;set('view_name', $view_name);
    $request-&gt;request-&gt;set('view_display_id', $display_id);
    $request-&gt;request-&gt;set('view_args', $request-&gt;get('args'));
    $request-&gt;request-&gt;set('view_dom_id', $dom_id);

    return parent::ajaxView($request);
  }

}


3. Create a wrapper &lt;div&gt; to embed the view

The &lt;div&gt; where you want to load a view via ajax has to have a specific css class in form of: .js-view-dom-id-{view_id}__{display_id}. Here replace the placeholders for view and display ids with the actual ones you want to embed.

&lt;div class="js-view-dom-id-{view_id}__{display_id}"&gt;&lt;/div&gt;


4. Load the view via ajax link

Now you can load the view creating links like:

&lt;a href="/admin/views/ajax/{view_id}/{display_id}/{args}" class="use-ajax"&gt;
    This link will load the view {view_id} display {display_id} with the
    arguments {args}
&lt;/a&gt;