Yeah, it'd seem to be most useful in an ORM context, or some other
situation where the SQL is generated. It doesn't spare you from the
problem of unanticipated writes resulting from stored procs or
triggers, but those are probably less common in environments using
some sort of ORM framework.
In the case of the stored procedures, some sort of naming convention
on those which perform writes might help for smarter decision making
on whether to add the 'read-only' flag to an outgoing request. But
that kind of 'magic optimization', besides being kinda an ugly hack,
would be solidly environment / application specific and deserves to be
pushed as far down the stack to the client side as possible.