Re "type hint the local binding, not the method value itself", this is intentional and not a bug. In the two places where FI conversion can happen there is effectively "assignment" with both a source expression ("right hand side") and the assigned target ("left hand side").
In a Java method call, the source is the argument type (the "type" of that expression can come from lots of places - a type hint on the argument, type flow of symbol or expression, or directly from the literal expression). The compiler does not actually "know" where the type of the source expression comes from, but importantly IT CAN BE WRONG. The target in this case is the parameter of the Java method you are invoking - that is either known, or it's reflective.
In a let binding, the source is the binding init expression, which similarly has a type that comes from ... somewhere, and also COULD BE WRONG. The target type can only come from the type hint on the binding symbol.
In general, Clojure developers type hint either of these mostly without discrimination and they usually have the same effect, because the binding (LHS) will take on the reported type (RHS) of the expression. But these are very different in how they are treated in the compiler and for implicit conversion, it matters a lot! So in the `let`, if you are requesting an explicit conversion to an FI type, it's important that you type hint the target specifically.
In a Java method invocation, the type hint there is tricky because it really has dual roles - in one sense you are stating the source expression type of the argument, and in another you may be using it in the Java invocation to select an overload choice and avoid reflection. In that case, it will importantly select the overload and thus act as the target type. If you want to separate those two roles, you can do that with param-tags, which only talk about target and overload selection independently from the source argument expression. That will lead you back to the answer from glchapman.