Sadly Microsoft made this unfortunate decision to overwrite cell's ReadOnly property when DataGridView.ReadOnly property is set.
As a workaround you may try to change DataGridView.EditMode property to EditProgrammatically, effectively restricting editing data by user through the UI.