Answer
Creating a custom menu typically needs more than just one specific 'allow custom menu creation' privilege — the user's permission set also needs to be granted actual access to whichever specific screens/forms they'll be adding the custom menu items to, since a custom menu is created per-screen rather than as one blanket global capability; and if the custom menu itself will contain PL/SQL code, rather than just a simple navigation action, an additional separate permission for defining PL/SQL is required as well. Missing any one of these three pieces, the base menu-creation privilege, access to the specific target screen, and PL/SQL-definition rights if applicable, can silently prevent menu creation even when the headline 'create custom menu' grant is already correctly in place.