Like a lot of things in language design, the answer is “that’s just how it works”. There’s no deeper reason beyond what the implementation does.
The feature is called requirement inference, and it visits a handful of fixed positions when looking for requirements to infer in this manner.
Here is my explanation from a few months ago: Some inconsistency in Generic Type Parameter declaration - #6 by Slava_Pestov
Also see Section 11.1 of https://download.swift.org/docs/assets/generics.pdf.