Always use #1 instead of #2. Actually, we are investigating how to avoid #2 at interface level (which is OTOH quite difficult while preserving context menu system). The fact that it was left in HelloWorld is rather bug than anything else (now fixed).
The thing is that "Set" and "PopUp" do some additional actions to get menu ready (like automatic hotkey assignment).
As for "Layout" variant, it is in fact the same as #1 - it does not matter whether you use menu as frame or as view ctrl.
Also, the difference between both context variants is zero - all the difference is in CallbackArgTarget, not in MenuBar.