diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraint.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraint.php
index 4a164b4165..790c988b07 100644
--- a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraint.php
+++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraint.php
@@ -25,13 +25,6 @@ class SourceEditingRedundantTagsConstraint extends Constraint {
    */
   public $enabledPluginsMessage = 'The following @element_type(s) are already supported by enabled plugins and should not be added to the Source Editing "Manually editable HTML tags" field: %overlapping_tags.';
 
-  /**
-   * When a Source Editing element is added that an enabled plugin optionally supports.
-   *
-   * @var string
-   */
-  public $enabledPluginsOptionalMessage = 'The following @element_type(s) can optionally be supported by enabled plugins and should not be added to the Source Editing "Manually editable HTML tags" field: %overlapping_tags.';
-
   /**
    * When a Source Editing element is added that a disabled plugin supports.
    *
diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraintValidator.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraintValidator.php
index 7564e42ed6..44109fd07b 100644
--- a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraintValidator.php
+++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraintValidator.php
@@ -45,8 +45,6 @@ public function validate($value, Constraint $constraint) {
 
     // An array of tags enabled by every plugin other than Source Editing.
     $enabled_plugin_elements = new HTMLRestrictions($this->pluginManager->getProvidedElements(array_keys($other_enabled_plugins), $text_editor, FALSE));
-    $enabled_plugin_elements_optional = (new HTMLRestrictions($this->pluginManager->getProvidedElements(array_keys($other_enabled_plugins))))
-      ->diff($enabled_plugin_elements);
     $disabled_plugin_elements = new HTMLRestrictions($this->pluginManager->getProvidedElements(array_keys($enableable_disabled_plugins), $text_editor, FALSE));
     $enabled_plugin_plain_tags = new HTMLRestrictions($this->pluginManager->getProvidedElements(array_keys($other_enabled_plugins), $text_editor, FALSE, TRUE));
     $disabled_plugin_plain_tags = new HTMLRestrictions($this->pluginManager->getProvidedElements(array_keys($enableable_disabled_plugins), $text_editor, FALSE, TRUE));
@@ -67,7 +65,6 @@ public function validate($value, Constraint $constraint) {
     }
 
     $enabled_plugin_overlap = $enabled_plugin_elements->intersect($source_enabled_element);
-    $enabled_plugin_optional_overlap = $enabled_plugin_elements_optional->intersect($source_enabled_element);
     $disabled_plugin_overlap = $disabled_plugin_elements
       // Merge the enabled plugins' elements, to allow wildcards to be resolved.
       ->merge($enabled_plugin_elements)
@@ -76,36 +73,32 @@ public function validate($value, Constraint $constraint) {
       // Exclude the enabled plugin tags from the overlap; we merged these
       // previously to be able to resolve wildcards.
       ->diff($enabled_plugin_overlap);
-    foreach ([$enabled_plugin_overlap, $enabled_plugin_optional_overlap, $disabled_plugin_overlap] as $overlap) {
-      $checking_enabled = $overlap === $enabled_plugin_overlap || $overlap === $enabled_plugin_optional_overlap;
+    foreach ([$enabled_plugin_overlap, $disabled_plugin_overlap] as $overlap) {
+      $checking_enabled = $overlap === $enabled_plugin_overlap;
       if (!$overlap->allowsNothing()) {
         $plugins_to_check_against = $checking_enabled ? $other_enabled_plugins : $enableable_disabled_plugins;
         $plain_tags_to_check_against = $checking_enabled ? $enabled_plugin_plain_tags : $disabled_plugin_plain_tags;
         $tags_plugin_report = $this->pluginsSupplyingTagsMessage($overlap, $plugins_to_check_against, $enabled_plugin_elements);
-        $message = match($overlap) {
-          $enabled_plugin_overlap => $constraint->enabledPluginsMessage,
-          $enabled_plugin_optional_overlap => $constraint->enabledPluginsOptionalMessage,
-          $disabled_plugin_overlap => $constraint->availablePluginsMessage,
-        };
+        $message = $checking_enabled ? $constraint->enabledPluginsMessage : $constraint->availablePluginsMessage;
 
         // Determine which element type is relevant for the violation message.
         assert(count($overlap->getAllowedElements(FALSE)) === 1);
         $overlap_tag = array_keys($overlap->getAllowedElements(FALSE))[0];
         $is_attr_overlap = self::tagHasAttributeRestrictions($overlap, $overlap_tag);
 
-        // If one or more attributes (and all of the allowed attribute values)
-        // of the HTML elements being configured to be edited via the Source
-        // Editing plugin is supported by a CKEditor 5 plugin, complain. But if
-        // an attribute overlap is detected due to a wildcard attribute, then do
-        // not generate a violation message.
-        // For example:
-        // - value `<ol start foo>` triggers a violation because `<ol start>` is
-        //   supported by the `ckeditor5_list` plugin
-        // - value `<img data-*>` does NOT trigger a violation because only
-        //   concrete `data-`-attributes are supported by the
-        //   `ckeditor5_imageUpload`, `ckeditor5_imageCaption` and
-        //   `ckeditor5_imageAlign` plugins
-        if ($is_attr_overlap && $source_enabled_element->diff($overlap)->getAllowedElements(FALSE) == $source_enabled_element->getAllowedElements(FALSE)) {
+        // If the entirety (so not just the tag but also the attributes, and not
+        // just some of the attribute values, but all of them) of the HTML
+        // elements being configured to be edited via the Source Editing plugin
+        // is supported by a CKEditor 5 plugin, complain. But if some attribute
+        // or some attribute value is still not yet supported, do not generate a
+        // violation message.
+        // If there is overlap, but some attribute/attribute value is still not
+        // supported, exit this iteration without generating a violation
+        // message. Essentially: when assessing a particular value
+        // (for example `<foo bar baz>`), only CKEditor 5 plugins providing an
+        // exact match (`<foo bar baz>`) or a superset (`<foo bar baz qux>`) can
+        // trigger a violation, not subsets (`<foo bar>`).
+        if ($is_attr_overlap && !$source_enabled_element->diff($overlap)->allowsNothing()) {
           continue;
         }
 
