The fact it isn't one means that in all sorts of different parts of our code, we have to put special cases for attachments, which is silly. It's also making labeling of attachments rather difficult.
Note: Right now, ContentEntityObjects all have attachments. This might need to be changed, since an Attachment can't really itself has an attachment. On the other hand, if it doesn't hurt, we may as well not go through the pain of adding another layer of inheritance there.