This is the workaround, disable the multi-select in KeyDown and reenable is in KeyUp
bool this._bMultiSelectChanged = false;
void tree_KeyDown(object sender, KeyEventArgs e)
{
    if (!e.Control && !e.Shift &&
        ((this.Options & GridOptions.MultiSelect) == GridOptions.MultiSelect) &&
        this.Rows.SelectedNodes.GetLength(0) > 0)
    {
        switch (e.KeyCode)
        {
            case System.Windows.Forms.Keys.Up:
            case System.Windows.Forms.Keys.Down:
                TreeViewNode node = (TreeViewNode) this.Rows.SelectedNodes[0];
                this.Options = this.Options & ~GridOptions.MultiSelect;
                node.Selected = true;
                this._bMultiSelectChanged = true;
                break;
        }
    }
}
void tree_KeyUp(object sender, KeyEventArgs e)
{
    if (this._bMultiSelectChanged)
    {
        this.Options = this.Options | GridOptions.MultiSelect;
        this._bMultiSelectChanged = false;
    }
}