It's a design decision, and it has not been decided to change it so far. Read-only fields are meant for information purpose and are not used to transfer actual data, so developers must not rely on them for persisting field values.
There are many workarounds for doing it (e.g. using a second invisible field), but this is generally seen as a bad pattern. Changing the current behavior *would* break many modules, we've tried it already.
It's a design decision, and it has not been decided to change it so far. Read-only fields are meant for information purpose and are not used to transfer actual data, so developers must not rely on them for persisting field values.
There are many workarounds for doing it (e.g. using a second invisible field), but this is generally seen as a bad pattern. Changing the current behavior *would* break many modules, we've tried it already.