Please excuse my beginner’s knowledge of Z-Wave, but it seems that the necessity of a Parameter 51 actually exposes a problem with how button events are generated. Maybe the current method is an integral part of the Z-Wave spec, or maybe it is merely the way companies happen to do things.
On HomeSeer 4, which from the log does not appear to be masking out anything, with the LZW36 (v1.34 and v1.36), a press/release of 001 or 002 generates a Pressed 1 Time event. Pressing & holding & releasing generates a Hold event then Release event. Press & release of 003 - 006 generate the Pressed 1 Time event, though a Hold generates no event at all (they do however still change the output level, so sort of not nice).
It would seem that any button should always generate a Press event and Release event, and be generated as soon as they occur. Any other button events would then be constructed from those events based on Parameter settings. E.g., a Hold event is generated from a prolonged Press, based on a Parameter specifying min time (or zero for disable), and the sequence of events that one would expect is:
Press
Hold
Release
A single-click would likewise be generated from a Press and Release that is too short to be a Hold:
Press
Release
Single-Click
A double-click, configured by a Parameter indicating maximum ms between Press/Release pairs that also do not conform to a Hold:
Press
Release
Press
Release
Double-Click
And so on. This means one can rely on quick response Press/Release events, and optionally use or turn off the other event types.
In my current non-Z-Wave system I make use of both a Press event and Hold event on the same buttons. In one scenario, the Press turns on the lights in the room (immediately), and if the button is held for the required time, thus generating the Hold event, the default audio source is also turned on (a subsequent Press turns everything off).
Anyway, it is mostly just about having both timely button state events plus the extra generated events to perform additional functionality.