I can go either way. I don't feel extremely vetted to one way or the
other.
However, another benefit for using two payload types: it makes it
easier for protocol analyzers like tcpdump or ethereal. They can
differentiate the cookie request N(COOKIE_REQUIRED{cookie}) from a
cookie response N(COOKIE{cookie}) to aid in analysis and debugging...
A small benefit indeed, but a tangible one for, IMHO, little
additional coding. You have to have the code to parse the packet
either way -- whether you look for IKEV2_NOTIFY_COOKIE or
..._COOKIE_REQUIRED is a one-line change.