Well, it was a stab! :|
Tracker says fixed for 3.7.6 and for 3.8.3.
Your site 3.8+ ... just missed it, I guess.
Confirmed ...
11 step process via Moodle Admin GUI Interface, but also noted there:
a 'work-around' ... Manually delete orphaned records in grade_grades which you have also noted. I, like you, would pursue the 'work-around'! 
So now the quest is how to find 'orphaned records' in grade_grades table.
'Safely' ... begins with making a backup of database and knowing how to restore that backup DB to a new DB and changing config.php to point to the restored DB.
Then ...
can you use whatever tool you have for interacting with DB, to id 'orphaned records' in grade_grades table?
mysql> explain mdl_grade_grades;
+-------------------+---------------+------+-----+-----------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+---------------+------+-----+-----------+----------------+
| id | bigint(10) | NO | PRI | NULL | auto_increment |
| itemid | bigint(10) | NO | MUL | NULL | |
| userid | bigint(10) | NO | MUL | NULL | |
| rawgrade | decimal(10,5) | YES | | NULL | |
| rawgrademax | decimal(10,5) | NO | | 100.00000 | |
| rawgrademin | decimal(10,5) | NO | | 0.00000 | |
| rawscaleid | bigint(10) | YES | MUL | NULL | |
| usermodified | bigint(10) | YES | MUL | NULL | |
| finalgrade | decimal(10,5) | YES | | NULL | |
| hidden | bigint(10) | NO | | 0 | |
| locked | bigint(10) | NO | MUL | 0 | |
| locktime | bigint(10) | NO | | 0 | |
| exported | bigint(10) | NO | | 0 | |
| overridden | bigint(10) | NO | | 0 | |
| excluded | bigint(10) | NO | | 0 | |
| feedback | longtext | YES | | NULL | |
| feedbackformat | bigint(10) | NO | | 0 | |
| information | longtext | YES | | NULL | |
| informationformat | bigint(10) | NO | | 0 | |
| timecreated | bigint(10) | YES | | NULL | |
| timemodified | bigint(10) | YES | | NULL | |
| aggregationstatus | varchar(10) | NO | | unknown | |
| aggregationweight | decimal(10,5) | YES | | NULL | |
+-------------------+---------------+------+-----+-----------+----------------+
orphaned ... means no data tied to userid? User doesn't exist in system?
so if one ran this:
select id,itemid,userid from mdl_grade_grades;
and in data returned there was a row that contained no data in userid column?
Sorry ... ain't a DB admin guru! :| Anyone?
'SoS', Ken