Let me “resurrect this question, because now I am struggling with similar questions, and I think I found an answer - it can be useful to someone else. Or I can be wrong, and someone can tell me :)
I think there is nothing wrong with your thinking. The fact is that you do not need to correct gamma all the time if you know what you are doing. It depends on what you want to achieve. Let's see two different cases.
A) Light modeling (AKA rendering). You have a diffuse surface with a backlight pointing to it. Then the light intensity doubles.
Well. Let's see what happens in the real world in such a situation. Assuming a purely diffuse surface, the intensity of the reflected light will be the albedo of the surface times the intensity of the incoming light and the cosine of the angle of the incoming light and the normal. No difference. The thing is, when the intensity of the incoming light doubles, the intensity of the reflected light will also double. This is why light transport is called a linear process. Funny, you won’t perceive the surface twice as bright because our perception is non-linear (this is modeled by the so-called Stephen power law). Put it again: in the real world, reflected light doubles, but you don’t perceive it twice as bright.
Now, how would we simulate this? Well, if we have an sRGB texture with an albedo of the surface, we would need to linearize it (by eliminating it, which means applying 2.2 gamma). Now that it is linear, and we have the light intensity, we can use the formula indicated earlier to calculate the intensity of the reflected light. Since we are in linear space, doubling the intensity, we will double the output, as in the real world. Now we are gamma correcting our results. Because of this, when the rendered image is displayed on the screen, it will apply gamma, and therefore it will have a linear response, which means that the intensity of the light emitted by the screen will be twice as high when we simulate twice than when we imitate the first. Thus, the light that comes to your eyes from the screen will have double intensity. Just as it would be if you were looking at a real surface with real lights affecting it. You will not perceive the second render twice brighter, of course, but, again, and, as we said earlier, this is exactly what will happen in a real situation. The same behavior in the real world and in the simulation means that the simulation (rendering) was correct :)
B) In another case, you want the gradient that you want to “watch” (perceived by the AKA) to be linear.
Since you want the non-linear response of the screen to reduce our non-linear visual perception, you can generally skip gamma correction (as you suggest). Or, more precisely, continue to work in linear space and gamma correction, but create your gradient not with consecutive pixel values (1,2,3 ... 255), which will be perceived non-linearly (due to Stephen), but the values are converted inverse to our reaction of perceiving brightness (i.e., applying the normal index 1 / 0.5 = 2 to normalized values, which leads to the inverse Steven indicator for brightness).
In fact, if you see a linear gradient with gamma correction, for example, in http://scanline.ca/gradients/ , you do not perceive it as linear: you see much more changes at lower intensities than at higher ( as expected).
Well, at least that's my current understanding of the topic. Hope this helps anyone. And again, please, please, if this is wrong, I would be very grateful if anyone could point this out ...