Нашел это. Это не может быть необязательным, но по умолчанию можно объявить так:
@Target(value={ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnnotation {
Class<?> myType() default String.class;
}
Если никакое значение по умолчанию не имеет смысла как «пустое» значение, тогда это проблема.