In my working copy of rfc3921bis I have:
***
The server SHOULD return a <not-allowed/> error to the client if the
roster set violates any of the following rules:
1. The <item/> element MAY contain a 'name' attribute, but the value
of the 'name' attribute SHOULD NOT be more than 1023 characters
in length.
2. The XML character data of any given <group/> element MUST NOT be
of zero length and SHOULD NOT be more than 1023 characters in
length.
***
It says SHOULD NOT. If a server has good reasons to go over 1024, it is
perfectly allowed to do so. So this is a guideline, not a requirement.
As a guideline I think it makes a lot of sense (we can quibble over the
size).
It would be handy to also specify an extended additional error along
with the <not-allowed/> so that the client can know what part of the
roster item is wrong which would add to the flexibility, e.g.
<name-limit-exceeded xmlns="urn:xmpp:roster:errors"/> and
<groupname-limit-exceeded xmlns="urn:xmpp:roster:errors"/>.
This will allow the client to present the appropriate message to the
user as to what they need to modify, this along with the not set in
stone limit of 1023 is flexible enough for me.
Richard