Isn't the way logicalType decorators work on types in IDL just a natural consequence of how IDL treats any decorator on a type as a JSON property for that type, combined with the meaning of that field in the spec?
I think this intent is expressed clearly enough in the IDL documentation "Annotation Ordering and Namespaces" (perhaps this section title is a bit too specific):
Java-style annotations may be used to add additional properties to types and fields throughout Avro IDL.
(Some details on specific properties/annotations)
Some annotations like those listed above are handled specially. All other annotations are added as properties to the protocol, message, schema or field.
I don't think I found a great generic/shared test of this, but there are at least a few spots where the the set of tests ran by org.apache.avro.compiler.idl.TestIdl show off this kind of behavior.
For the IDL input simple.avdl, I see a case where the type of a field declared like:
@foo("bar") MD5 hash = "0000000000000000";
has the property "foo": "bar".