This issue exposes two important annotation-related gotchas.
1) To have an annotation visible by Scala reflection, you need to extend either StaticAnnotation or ClassfileAnnotation. Just Annotation won't cut it.
2) Annotation on a val is by default added to the underlying field of a val. Since val in question is abstract, there's no underlying field, so the annotation goes to waste. Writing @(W @scala.annotation.meta.getter) would attach the annotation to the getter as desired in this situation.
All in all, knowing these gotchas, it's possible to make abstract annotated vals in traits work as desired. Hence I'm closing this as not a bug, but I'm planning to work on making #1 and #2 more obvious.