Unity MultiSelection for CustomPropertyDrawers behaving incorrectly

Currently in our project we have a Custom Property Drawer for a string that allows us to select in an enum style a type or tag for an object. Example

Test class

public class StructureTagTest : MonoBehaviour
{
    [StructureTagDropdown] public new string tag;
}

CustomPropertyDrawer:

[CustomPropertyDrawer(typeof(StructureTagDropdownAttribute))]
public class StructureTagDropdownAttributeDrawer : PropertyDrawer
{
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        EditorGUI.BeginProperty(position, label, property);
        property.stringValue = GUIPopup.Draw(position, label, property.stringValue, StructureTagDictionaryEditorSingleton.Instance.Tags);
        EditorGUI.EndProperty();
    }
}

Up till now this functioned fine as a way for manipulating this value for several objects but when multi selecting I noticed it would always overwrite the values, I found out the issue here being due to us not accounting for the multi selection and spent some time looking into how people solved this.

After changing my approach theproperty drawer now looked like so (I also switched from our own wrapper for the EditorGUI.Popup to check the implementation fault I am experiencing is not our own)

[CustomPropertyDrawer(typeof(StructureTagDropdownAttribute))]
public class StructureTagDropdownAttributeDrawer : PropertyDrawer
{
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        EditorGUI.BeginChangeCheck();
        EditorGUI.showMixedValue = property.hasMultipleDifferentValues;
        
        int propertyCurrentIndex = Array.IndexOf(StructureTagDictionaryEditorSingleton.Instance.Tags, property.stringValue);
        int newInt = EditorGUI.Popup(position, label.text, propertyCurrentIndex, StructureTagDictionaryEditorSingleton.Instance.Tags);

        if (EditorGUI.EndChangeCheck())
        {
            EditorGUI.showMixedValue = false;
            
            property.stringValue = StructureTagDictionaryEditorSingleton.Instance.Tags[newInt];

            property.serializedObject.ApplyModifiedProperties();
        }
    }
}

Now when multi selecting no values are changed and the value shows as - which is great, when switching single objects every thing also works correctly.

Unfortunately though there is still an issue, here is an example with one object set to medium, and one set to small, and we will try and swap them both to Big.
in this case for interger values in the array big is 0, medium is 1 and small is 2

When breakpointing the first line of the if (EditorGUI.EndChangeCheck()) I see that the properyCurrentIndex value of the small is 2 which is correct and the newInt value from our EditorGUI.Popup is 0 which is big so all is correct

Our property vlaue is also correctly overwritten when breakpointing the end of the changeCheck it correctly shows that property.stringValue was set to the big.
I also tried adding a property.serializedObject.ApplyModifiedProperties(); to check this value is saved as I noticed previously the hasModifiedValues was set to true though I am unsure if it made any difference. (as a sidenote, I also attempted doing this as a loop for each targeted objects in property.serializedObject.targetObjects but found no difference). After this value is set there is nothing additional done from our side

Despite this seemingly behaving correctly the editor now shows both as “small” and it is cached as such in their values (seemingly regardless of the order I select the objects). I also have tried going through the list of targeted objects and specifically overwriting the serialized property and even ended up trying a few online “working” solutions but found no variance in my result.

This all seems to take place after my OnGui changes and I have nothing else modifying these values as this is an extrapolated test version of the previous used case. I am at a bit of a loss whether this is some internal unity error causing this now or if I am still having a misunderstanding.

For reference purposes my current Unity Version is 2022.3.0f1 if there is some bug I missed existing here.

(Happy to share more images of the breakpointed changes but the post limits me to 1 imbedded image)