I don't see anything obvious here... except maybe the setting of CellActivation. Are those the cells being skipped?
Or maybe something you are doing in AfterCellUpdate is causing the ActiveCell to change.
Perhaps it's some property of the data column, rather than a property of the grid that's causing this.
I don't know why it would work in Form_Load and not InitializeLayout - unless maybe InitializeLayout is not firing.
Regarding why it would skip the cell in the first place, the column has a TabStop and TabIndex property. So maybe you are setting one or both of these. Or maybe the column is not enabled (check CellActivation). Or it could be something in your code handling an event. Or you could have modified the KeyActionMappings.