When opening an expressions menu asset inspector, if the expressions menu does not have a parameters asset set, the custom inspector will attempt to check each avatar in the scene using IsSubmenuRecursive to see if the avatar contains that menu.
This check can be pathologically slow in some circumstances. In particular, this performs a depth-first search on the menu graph, without any check for cycles, and without addressing any cases where multiple paths lead to the same menu. This actually happens quite frequently - if you add a menu item to an expressions menu asset, it keeps the same submenu reference as the last item in the existing menu, so you can easily get multiple paths to the same asset. Combine this with multiple avatars in the same scene and you'll easily get an editor hang.
To repro this, import this package, open the attached scene, and then create a new VRC Expressions Menu asset.
To resolve this, I recommend adding logic to IsSubmenuRecursive to avoid traversing the same menu asset multiple times (ie, a visited hashset)