Here is what I discovered: ZoiPer is unhappy if the "Content" section of the SIP NOTIFY does not have an extra CR/LF at the end. I encountered this in Asterisk AMI programming, and instead of:
Content=Messages-Waiting: yes,Content=Voice-Message: 2/6
I had to use:
Content=Messages-Waiting: yes,Content=Voice-Message: 2/6,Content=
That extra "Content=" (with no content) apparently generated the extra CR/LF that ZoiPer was expecting.