Using attach_library in a modal
render() only works because of EarlyRenderingControllerWrapperSubscriber, which should have been removed by now:
 * In other words: this just exists to ease the transition to Drupal 8: it
 * allows controllers that return render arrays (the majority) and
 * \Drupal\Core\Ajax\AjaxResponse\AjaxResponse objects (a sizable minority that
 * often involve a fair amount of rendering) to still do early rendering. But
 * controllers that return any other kind of response are already expected to
 * do the right thing, so if early rendering is detected in such a case, an
 * exception is thrown.
 *
 * @see \Drupal\Core\Render\RendererInterface
 * @see \Drupal\Core\Render\Renderer
 *
 * @todo Remove in Drupal 9.0.0, by disallowing early rendering.

So don't use any render method. Ajax renders HTML content automatically and so makes sure to catch all metadata which bubbles up.
BTW in a module handling AJAX responses you don't need to bubble up attachments through Twig:
{{ attach_library('focal_point/drupal.focal_point_preview') }}

You can add them directly to the Ajax response:
$response-&gt;addAttachments(['library' =&gt; ['focal_point/drupal.focal_point_preview']]);