Thanks to Infinite Mac, I found out the reason defn has that bug is because in even older m4 versions, such as those in NeXTStep & OpenStep, the changequote macro sets the quote strings to only the first byte of its argument strings, not up to 5 bytes each, and its manpages imply this.
And it went either undiscovered or unremarked because what kind of masochistic idiot would want multi-character quote strings, i.e. more typing, in m4 anyway?