Прежде всего, readonly
ссылки могут быть переназначены внутри конструкторов. Что касается перемещения указателей в GC, то в этом нет ничего особенного, чем то, что происходит с другими обычными указателями, за исключением того, что пользовательский код не может изменить то, на что они указывают.
По существу readonly
только мешает ВАМ изменить ссылку, но не мешает среде выполнения делать то, что она должна делать.