I think what the OP is getting at, is that there is a specific use case for when one needs dynamic member lookup, but in the target environment, there are several properties/methods that are basically guaranteed to exists, but calling them requires going over the same dynamic member lookup “bridge” so to speak.
For an easy to understand example, say in Objective-C, NSObjectProtocol is implemented in NSObject, so in my hypothetical obj-c dynamic member lookup I can be guaranteed that those members are available, so i’d like the syntax convenience back for those that are known, even if I have to traverse the dynamic bridge to get them.
For all other members, then, it is fully “dynamic” without code completion etc... that’s is until you cast it to another protocol (as an example).
Also, you could hypothetically use a protocol to “guide” the dynamic lookup by specifying a protocol that matches some implementation on the other side, lets say some concrete class, and then using the dynamic lookup if “isKindOf” and if it returns yes, cast it to the protocol etc.
So basically, it lets you “soft type” something that is running in a dynamic environment when you need/want it.
As swift expands to interface with other environments with dynamic languages from swift, it would be convenient for them.
Maybe it’s not so useful, but in any case that’s my interpretation of the OP and generally what I would use it for.
(and apologies if what I describe above is already possible, I haven’t used Dynamic Member Lookup yet)