Can’t remember the details of how it works offhand, but I think for blueprints, those C++ methods are unknown and the comparisons will be done via the reflection system by default. Which would be per-property, hence the behaviour.
I think this can be overridden. Have a search in the engine codebase for CppStructOps. It’s a way of specifying custom C++ behaviour that the reflection system can access. I suspect there is one for equality testing.