I tried the following patch, which just moves the setcdr above outside the `(when preferred ...)'. The error stops happening, and other multipart/alternative stuff seems to keep working fine, but I don't grok the internals of gnus-art.el well enough to say if it's the right way to fix the problem, and, of course, it may not be relevant any more with the various button changes that have been underway.