A part of Swift methods, as in many other languages supporting function types, is that they can be assigned to variables and passed around. This piece of code works in Python. Translating it to swift would work the same.
l = [0, 1, 2, 4, 8]
a = l.append
a(16) # l is now [0, 1, 2, 4, 8, 16]
Using your proposed approach, this would not be possible to do using @dynamicCallable. This is why a variant with the semantic of calling the function represented by the receiver is needed.
I'm not sure that is the case right now. Surely not when using something other than Array as container for the arguments, which the proposal aims to allow, I think for good reason:
We write the arguments and keywordArguments parameter as an array type, but these will actually be allowed to be any type that conforms to the ExpressibleByArrayLiteral protocol, where the element type has the specified constraints.
Now, we could just solve these problems by providing one methods with both the base-name and the argument labels as optionals, but that would (a) muddle the semantics of the method (am I being called or should I call a member of mine?) and (b) prevent us from making things that are impossible in a language compile-time errors.
So I think it is justified to have a number of different options when it comes to what semantics types implementing @dynamicCallable can support.
One might argue there should be @dynamicCallable and @dynamicMemberCallable or something like that, but I don't think that really provides much additional information over what one can tell from the proposed method and parameter names, and trying to do something a type doesn't support would be a compile-time error either way.