This is actually the expected behavior. The thing is that selection is performed on data level, while enable/disable of rows is a visual operation. When a a row for a particular item is disabled, the only way to know that is after that row is displayed in the view port. Otherwise, that row is used for another data item (since RadGridView is virtualized). If, for example, a user selects all items, not every item has its own GridViewRow, and the info which row is disabled is not available.
The same behavior is observed with DataGrid as well.
The solution is entirely it the hands of the user since each model is different (so its rule for disabling rows) and he/she knows which items can be selected or not.