Вы можете захватить событие Scroll в одном DataGridView, а затем установить свойство FirstDisplayedScrollingRowIndex другого, таким образом, предполагая, что «исходная» сетка данных называется dataGridSource, а другая - dataGridTarget, и что оба имеют одинаковое количество строк, вы можете написать:
private void dataGridSource_Scroll(object sender, ScrollEventArgs e)
{
if(e.ScrollOrientation == ScrollOrientation.VerticalScroll)
{
int i = dgvLog.FirstDisplayedScrollingRowIndex ;
dataGridTarget.FirstDisplayedScrollingRowIndex = i;
}
}