The point is that you break the process into two pieces:
1) Key exchange is mediated, encrypted and authenticated by the cloud.
2) Command exchange is always encrypted and uses the already exchanged keys between the phone and lock. The commands may or may not go through the cloud as an intermediary.
> It's not that easy: Now the lock doesn't work when either your phone or your lock has no internet connection, or the cloud is down.
I don't find the requirement for the pairing process to be cloud mediated to be very onerous. After the pairing process, you can decide if the reliability requires the lock to operate if the cloud is offline.
And you probably need at least intermittent internet connectivity or you can never revoke access.
> And you need to use a phone that is manufactured by the same company as the lock?
It's called an app. And generally, yes, the manufacturer makes you use their app to open the lock.
> I'd say there are better ways to prevent man-in-the-middle attacks during set-up, which are IMO not really a problem anyway.
I don't agree. The problem is that pairing is ALWAYS annoying and nobody wants to put a button on the lock to change its mode (or want to be able to automate the addition of people to the lock control). An attacker being able to arbitrarily activate the pairing process locally gives a much bigger attack surface--forcing this process to involve the cloud cuts that surface down significantly.
> But now you're doing public key exchange which you wanted to avoid, why then involve the cloud at all?
It's not a public key exchange. It's a private, encrypted key exchange with keys that got mediated by the cloud. That's a much harder system to attack from the point of view of an attacker.