This behavior is by design.
But you can change it by handling the QueryNextCurrentCellPosition. Here is one try at doing this.
private void gridControl1_QueryNextCurrentCellPosition(object sender, GridQueryNextCurrentCellPositionEventArgs e)
{
if(e.ColIndex > this.gridControl1.ColCount && e.Direction == GridDirectionType.Right
&& this.gridControl1.ViewLayout.LastVisibleCol <= this.gridControl1.ColCount)
{
this.gridControl1.LeftColIndex += 1;
e.Handled = true;
e.Result = false;
}
}