Cannot get values in 3rd level SubFormState
After quite some experimenting I came to a working solution.

  /**
   * {@inheritdoc}
   */
  public function blockValidate($form, FormStateInterface $form_state) {
    if ($form_state-&gt;hasValue(['carousel', 'plugin'])) {
      $carousel_plugin = $this-&gt;carouselManager-&gt;createInstance(
        $form_state-&gt;getValue(['carousel', 'plugin']),
        $form_state-&gt;getValue(['carousel', 'settings'])
      );

      // We have to do some manual adjustments here since the SubFormState
      // is far from perfect.
      $element = $form['settings']['carousel']['settings'];
      array_shift($element['#parents']);

      $carousel_plugin-&gt;validateConfigurationForm(
        $element,
        SubformState::createForSubform($element, $form, $form_state)
      );
    }


So the embedded validation handler has to receive altered form element and the subformstate has to receive the original, intact, form.