Read-only mode can work the same way as LBFactory and FileBackend, where the flag is passed down the object construction graph.
It's useful to have:
a) App level read-only errors instead redis error spam about read-only mode
b) Read-only mode on the app level to reduce traffic for background maintenance sometimes
c) The ability for code to check if the queue is read-only to have smarter behavior