How about:
"packoffset() reservation with swizzle does not abide to register boundaries."
?
"abide" is a somewhat unusual word here (and I don't think "abide to" is a particularly English construction either).
The problem with making reference to "register boundaries" is that it's not quite the condition; types greater than vectors can and even must span multiple registers. Although I guess there's an argument that that kind of message covers all of the cases that aren't weird edge cases?
Perhaps we should just have two conditions (which are probably going to be necessary in the code), along the lines of "packoffset() reservations with vector types cannot span multiple registers" and "packoffset() reservations with matrix/array/struct types cannot specify a component". [I'd also say 'component' rather than 'swizzle' honestly.]