There are 2 things that are very hard to achieve natively with custom menus, so hard in fact that it is discouraging having to implement it:
- showing an item as being greyed out (like "show all records" when that command was just performed, the item does not disappear from the menu, it is shown but greyed out)
- showing an item with a checkmark next to it (like what we see in the view menu next to the possible options for window mode, the active mode is shown with a checkmark next to it)
From a design point of view, the first one is simply that, even if we could hide the menu item altogether, from the user experience point of view, we do not want the menu items to be removed, because it changes the position of others and menus are all about "eye memory" (I not talking about the users who rely heavily on keyboard shortcuts), removing menu items based on some calculated condition can have its place, but too much of it and the user ends up having to search for his selection every time.
The second one is simply to convey a state, something that is not impossible, but very hard with the custom menus.
Also, it should be fairly simple to implement in both cases.