In upper division, the classes got considerably smaller and considerably harder. Grades meant more, and the system was not easily played. When you have a class of 20 you can't screw around anymore. You can't hide behind your TA. You get what you put in.
That's not to say I didn't have funky grade experiences in upper div too - I had one class series that actually had a serious grade deflation problem. The average on our second quarter final was 18.5%. In the end, if you tried hard and did well in the lab, your grade was basically a participation score. Now, I learned an enormous amount in that class because it was so hard. It was demoralizing at times because everyone though they were going to fail (I vividly remember contemplating my future during that final, wondering if I would ever pass that class). So in that case, grades didn't really matter.
Personally I think the solution comes with class size. Grades become inflated because as more people are managed by a professor and their TAs, the less careful they have to be while handing them out. There's too many exceptions and they can't spend all their time tracking down who is being truthful when they say their dog ate their homework or their roommates keep them up all night because they're drunk. It's much the same problem as large corporations have with employee performance scores - as the body you are judging grows, your criteria become much more generalized and the judges much more disconnected from those being judged.