This has been discussed directly and indirectly several times. You haven't missed anything obvious. You have described the issue very well.
Although some Clients connecting using Read/Write Authentication after you turn on Read-only Authentication is a new twist. Previously everyone has reported Clients can only connect with Read-only Authentication once it is turned on, if there is no password set up for that. Maybe there is some dependency on whether the MC Server has been restarted, or the MC Server PC or MC Client PC has been restarted. Perhaps some caching somewhere.
The alternative of not saving passwords on any Clients, so that users have to enter a Username and Password every time they start a MC Client, even for Read-only Clients, is not very palatable for anyone. I'm not even sure if that works. Besides, once you have given the Client the Username and Password there doesn't appear to be any way to clear the information from the Client. There is a "Reset saved internet passwords" setting, but I don't think that clears Client Usernames and Passwords. The only way I have been able to make the Client ask for a Username and Password again is to change them on the MC Server.
I suspect that only one Username and Password combination is stored on the Client, and that Read-only Authentication with no Password is tried first. But if the Username is different for Read/Write and Read-only Authentication, then the user should at least be asked for a Username when starting the Client, to check the Password against. I assume that you are using or have tried using different Usernames for Read/Write and Read-only Authentication?
I'm sort of having the opposite problem at the moment. My Client is asking for a Username and Password fairly regularly, but not always, and I only have Read/Write Authentication turned on. That would imply that my Client is forgetting the Username and Password that has been saved, which may explain why some of your Clients connect with Read-only in your experiment; those Clients may be forgetting the Read/Write Username and Password, and so falling back to Read-only Authentication. But how does the Client know which Username to use? Maybe it doesn't care about the Username if the Password is blank.
Anyway, some way to allow each Client to connect either with Read/Write or Read-only Authentication, on start of the Client based on user inputs, would be good. That goes a bit beyond your request to provide a Client side setting, which would restrict the Client to just one Authentication method. But for other people who have struggled with the issue, it would be better. Some of them wanted to normally start the Client in Read-only Authentication mode, but sometimes want to be able to start in Read/Write Authentication mode to do some maintenance.