Why shouldn't an interface expose constants and enumerations that are used to communicate via the interface?
Two answers, depending on how I read your question;
1. If the question is 'Why should the interface not impose a specific attribute, i.e. actually contain it, so if two classes realize the same interface, then neither have the attribute; the interface does.'
Well, it should. But that does not inforce that these variables/enumerations are implemented by the realizing class.
I think this is related to the reason to have interfaces; to create a Facade for the realization. The user of the interface should not know anything about the interface internals, only what he can 'get' through it. For the user the attribute are therefore real, but for the realization they arn't necesarrily. Ok, that sentence got a bit weird, but I hope you catch my drift.
2. If the question is 'Why shouldn't the interface defines the types and enumerations exchanged as part of the interface operations?'.
This is the concern of your information viewpoint, which provides the horizontal standardization of your system, i.e. collects all types used. The interface is part of the computational/functional viewpoint, which is specific for a component/class. But the computational viewpoint uses the information viewpoint.
This does not mean that the information viewpoint is a big pot with all types inside. Its structured and encapsulates the types used within composite components, but will typically contain parts used across all components.