1) Instead of CurrentCellAcceptedChanges, you might move your code to grid.Model.SaveCellInfo. This should be hit whether the change comes from the user or whether it is from a undo/redo. (If you need the value of the cell, get it from e.Style.CellValue.)
2) In grid.CurrentCellMoved, you can try turning off/on the commandstack when you are in a column that you do not want to support undo. Here is a try at turning it off for column 2.
private void gridDataBoundGrid1_CurrentCellMoved(object sender, GridCurrentCellMovedEventArgs e)
{
GridCurrentCell cc = this.gridDataBoundGrid1.CurrentCell;
if(cc.MoveFromColIndex == 2 && cc.MoveToColIndex != 2)
this.gridDataBoundGrid1.Model.CommandStack.Enabled = true;
else if(cc.MoveFromColIndex != 2 && cc.MoveToColIndex == 2)
this.gridDataBoundGrid1.Model.CommandStack.Enabled = false;
}