To me NFC is superior. It checks all the boxes you mentioned plus quicker / last steps

But NFC unchecks the box "Open" since NFC access is usually a prerogative of the native wallet app of the OS, i.e. our favorite US duopoly. By contrast, any device can read or display a QR code. Hence also the success of QR payments in China, where the local app ecosystem is built more or less on top of the Android-iOS native layer.

I'd much prefer NFC if I could see how much I was paying and had to always confirm it -- I understand this wouldn't have worked with physical cards but I wish it was an option on my phone.