There shouldn't be any issue with annotations being recursive. Like with non-final variables referenced by inner classes, I don't understand the quantity of ink being spilled by Java designers over this. With Scala annotations, we just made them recursive without thinking about it, and nothing goes wrong.
I increasingly think that every CS fan should learn about algebraic data types (ADTs). They're the algebraic version of data definition, and they show up all over the place once you start recognizing them. In the case of annotations, every annotation is associated--via its arguments--with some sort of model of the sorts of things the annotation can say. To define that model, you want to at least have what you can do with ADTs, or it's going to frustrate users.
It's just common to want to say, for example, that a unit of measure is either meters, or seconds, or the product of two measures, or the quotient of two measures. Those last two cases are recursive.