Ethan,
The IPTC specification does define restrictions on the length of various fields (e.g. 32 "octets" for photographer, title, city, state, credit source, transmission reference; 64 "octets" for object name, edit status, country; 2000 "octets" for caption), although these limits are often ignored by software because there isn't much of a reason to limit the lengths these days when memory is plentiful. The one obvious exception is the Category field which is limited (as you discovered) to 3 "octets". An "octet" is a byte (8 bits). The IPTC specification also says that only the caption field can contain linefeeds and carriage-returns.
This gets complicated by the fact that one can enter UTF-8 (Unicode) into the IPTC-IIM. With UTF-8, a single "character" can take several bytes. So the limit of 32 "octets" for, say, photographer could be troublesome because it could be much fewer "characters".
The XMP specification doesn't have these limits (other than the Category field limit of 3 chars). That is why Photoshop will let you enter longer values than the IPTC-IIM limits in File Info; for example, more than 32 characters for credit. However, if you look at the IPTC-IIM data it will be truncated, but the XMP will not be truncated. You can try this yourself and tell Photo Mechanic to load IPTC before XMP to see the truncation, or XMP before IPTC to see the full length values. However, Photoshop does allow linefeeds and carriage-returns in several fields other than Caption to be saved in the IPTC-IIM which is technically a no-no.
So, we could add strict truncation of values to Photo Mechanic I suppose, but it would have to be a preference that you would need to enable since most people would not want this limitation. Should it also strip linefeeds and carriage-returns in all fields other than Caption? Should the limit be "octets" (bytes) when using UTF-8 (and if so we may need to truncate to fewer than the limited number of bytes to make sure that the last UTF-8 character is complete)? How picky do you want to be?
Again, the Category field is special and I agree we should limit this to 3 chars period (again, what about UTF-8?).
--dennis