The answer indeed lies in the GJ Specification, which has already been linked, quote from the document, p.14:
The convention of passing parameters before the method name is made necessary by parsing constraints: with the more conventional “type parameters after method name” convention the expression
f (a<b,c>(d))would have two possible parses.
Implementation from comments:
f(a<b,c>(d)) can parsed as either of f(a < b, c > d) (two booleans from comparisons passed to f) or f(a<B, C>(d)) (call of a with type arguments B and C and value argument d passed to f). I think this might also be why Scala chose to use [] instead of <> for generics.