Currently, NOTFOUND is sent in response to a GETDATA message which can contain at most MAX_INV_SZ items. If a peer sends a GETDATA message with more items than MAX_INV_SZ, the node is banned (Misbehaving).
I think it would make sense to add the same for NOTFOUND messages since sending more items than it is possible for GETDATA would not make sense, and we would also avoid to allocate more memory than is necessary (within the 4MB limit).