I think it is a side effect of the implementation of many things.
But for me, this behaviour makes sense because buttons (which change the
record) are known/expected changes so it will be a mistake to create a
readonly Many2One which does not take into account those possible
changes.