I’m aware of the app note (I referenced it in this post) and “right thing to do” depends on the design requirements.
The app note suggests Message Mode because it’s the path of least effort. Parsing packets in Message Mode is simpler than in Pulse Mode. The trade-off is Message Mode provides a subset of Pulse Mode’s available information and control (yes but see note below). If the design requirements don’t need the additional info (or control) then Message Mode offers an easier implementation path.
I believe the most significant difference is that Pulse Mode allows for the implementation of auto-discovery (see note below). That’s a feature commonly available in other lighting protocols like Zigbee, z-wave, etc.
I had mentioned in a previous post that Premise’s UPB driver uses Pulse Mode; I don’t need to import a UPE file whenever I use Upstart to add a new device, or change its configuration, or add/modify links. Premise’s driver discovers the changes by itself. It is also aware of all links (scenes) and which devices respond to a given link. It provides the end-user with a more seamless, transparent integration (compared to manually exporting/importing a configuration file). However, offering this level of end-user convenience comes at the cost of greater programming effort in Pulse Mode.
NOTE
After doing more reading, I need to walk back this statement (mea culpa). Pulse Mode does provide more information about the received UPB pulses, thereby allowing you to determine pulse energy and/or noise levels. However, it does not provide more commands than those available in Message Mode. Therefore it should be possible to implement auto-discovery using either Pulse or Message Modes.