I think you can work around this problem by handling QueryNextCurrentCellPosition and explicitly setting teh currentcell in this case.
private void gridControl1_QueryNextCurrentCellPosition(object sender, GridQueryNextCurrentCellPositionEventArgs e)
{
GridCurrentCell cc = this.gridControl1.CurrentCell;
if(e.Direction == GridDirectionType.Down
&& cc.ColIndex == this.gridControl1.ColCount
&& cc.RowIndex == this.gridControl1.RowCount - 1)
{
e.Handled = true;
e.Result = true;
cc.MoveTo(this.gridControl1.RowCount, 1);
}
}