Я думаю, что документация объясняет это лучше всего. В нем говорится, что свойство DataKeyNames является «массивом, который содержит имена полей первичного ключа».
Когда вы изменяете gridview, динамически формирует значения из строки и передает их в источник данных. При удалении предполагается, что все, что нужно, это первичные ключи. Они удобно хранятся в DataKeys для этой строки, поэтому они являются единственными значениями, которые вы получаете.