It is not required by the language specification and seems to be vendor-specific.
Are there any benefits or better guarantees about how will annotations work for the user of the annotation/class? Or is it just that some JDK class got reused to help implementing annotations because it was “convenient”?
See also this IKVM blog post.
Annotations are interfaces. At the same time, they supposed to have some properties at least, which should be read by annotation processors. The easiest way to achieve this duality is to dynamically proxify the annotations at runtime (or may be classloading time, not sure).