As far as my tests have shown so far, the VirtualDataGridView is very efficient. Take a look at the code in this thread here for instance, where I was experimenting with 100 thousand rows in a VirtualDataGridView.
The VirtualMode, as implemented by Windows Forms DataGridView, is not implemented yet though, as the required events for that implementation do not fire in Visual WebGui (CellValueNeeded, CellValuePushed, NewRowNeeded....). In that sense the VirtualDataGridView is not virtual in terms of on demand data retrieval from the underlying datasource.
For the virtuality in the VirtualDataGridView, you would set UseInternalPaging = false, and then with a huge datasource, you would get a "single page" scrollable DataGridView for all of your data.
The API for the DataGridView and VirtualDataGridView is identical, so yes, you would use the same event code. In fact, you should be able to change your existing DataGridView controls to VirtualDataGridView controls with just minimal efforts, more or less just replacing the type signature in your designer generated source files (or the equivialent ones, if dynamically created). Same column types are used, so DataGridViewTextBoxColumn is used for both controls.
Hope this helps,