Note: This is all about your 2.0 patch. Haven't yet looked at the 1.9 version.
Attaching my version of your patch. In the interests of speed I've made changes myself rather than us going back and forth a bunch of times. Let me know if I've broken anything or if I've misunderstood your intent anywhere.
When you introduce new settings you need to put up the version number. That will cause the admin to be prompted about the new settings and defaults to be inserted. Otherwise you get a lot of php warnings about $CFG->grade_report_user_showpoints, for example, not existing.
I've altered the new settings (and one of the old ones) so that the defaults mirror 1.9. Having all the columns hidden by default will lead to confusion.
Re grade_report_user_showaverage_ur. Read aloud that's "grade report user show average user report". Not sure its necessary to repeat the words user and report. Also, in Moodle code, try and stay away from acronyms. They tend to be a bit hard to decipher especially for programmers for whom English isn't their first language.
Points? You're American aren't you? Throughout the Moodle code we use the terminology grade item and grade. For consistency within the code I've substituted the word grade for points so it matches the rest of the code.
I've shortened the setting descriptions and removed repetitions of words from the strings. Strings like that are of course very subjective however I generally believe that the less text on screen the more likely it is that a user will actually read it.
I've also removed all the code you commented out.
I believe you were accessing the wrong preference in grade_report_user::user_avg(). If you look in grade_report::get_pref() the preference name has 'grade_report_' added to the beginning. If you just supply 'showaverages' the preference you actually get is 'grade_report_showaverages', the preference for the grader report, and not 'grade_report_user_showaverage', the preference for the user report. Supplying 'user_showaverage' makes it work. Can you please check the other instances of calls to $this->get_pref() and make sure that they are getting the preference you really want?
Also, within grade_report_user::user_avg() I've shifted everything to be within the if block. Trying to do as little work as necessary if the average isn't going to be displayed anyway.