I think this is because the QR code contains two keys: a short-term symmetric secret key used for this particular session, and a long-term asymmetric identity key that is used to identify the client platform to the tunnel service for future sessions (e.g. to ask the tunnel service to wake up the authenticator and start another BLE advertisement without the user having to scan a QR code). The platform needs to prove ownership of the private key to the tunnel service, and the tunnel service and authenticator need to agree that they're talking about the same public key for the platform.
So the platform needs to generate the identity keypair, and the authenticator needs to attest to the public key to the tunnel service. That wouldn't work if the QR code was generated by the authenticator or another third device.
Hope that's helpful,
Isaiah Inuwa