When a row is initially inserted into a table and the row is too large to fir in one data block, the row is "chained" in multiple blocks.
When a row is already inserted in the bklock in it fits in it, but later it is updated and becomes bigger and does not fit any more in the block - the entire block is "migradted" to another block. The initial block contains a link to the migrated block so the initial rowid is not changed.
Both of these occurences decrease I/O performance when reading these blocks.