Normally that “Application” or “Context Menu” key is bound by the CommandHandler to invoke the CommandHandler.showContextMenu command, which it calls if the CommandHandler.canShowContextMenu predicate returns true.
Both that predicate and the command don’t know what GraphObject to use to find its GraphObject.contextMenu, unless it is explicitly passed as an argument.
When invoked via the keyboard, it uses the first selected Part. So if something is selected, its Part.contextMenu if non-null is shown.
But if there’s nothing selected, it uses the mouse point to see what’s “under” that point, and it checks that GraphObject and its containing panels until it finds a GraphObject.contextMenu. (If there’s no GraphObject at that point, it uses the Diagram.contextMenu, if present.)
So I hope it is clear that the mouse-right-click context menus are always working because they always have the expected mouse point to work with to find the desired GraphObject with the context menu.
But in your case without the mouse information it needs to depend on the node being selected. If it is selected, then the command is not guessing about which GraphObject within the Node to use to find a context menu. And if nothing is selected, well, it really cannot guess at all.