So being 'technically' correct is good because you know that the system works as expected, but sometimes those soft skills are just as important when you want to have people actually use your system. In the above case, walking users through why entering 4 and 4 = 8 would be a better exercise than making people feel stupid. I would equate the above story to someone going to up an overweight person and saying: "If you lost 50 pounds you would be more attractive and healthy". You are not technically wrong, but you sound like a dick.
I get what you're saying but you're making an assumption about the way it was presented. I've tried many times to get technical info through as softly as possible. Oftentimes the only real way out without getting them angry would be "You know what? You're right, 4 and 4 IS 7" and keep collecting a paycheck.
Using your analogy it's more like a fat person coming to you and asking "why am I fat?" and you responding "Maybe it's because you take in more calories than you burn." Then they would call you an ass because they wanted you to tell them it's genetic.
I think there is a great deal of value in working with users to figure out whether the thing they are asking for is actually the thing that would be best for them to solve their particular problem (which in turn relies on carefully identifying the actual problem they are trying to solve).
So for example what they are initially asking for might be 4 and 4 =7 which is of course not possible and a developer's first instinct would be to start trying to build a system where 4+4=8, but what they actually need might be a system that works in base 8 so that 4 + 4 = 10 (convoluted enough for you?).
Or alternatively calories in vs calories out might be technically true but not the root of the problem for someone who hates themselves enough to try and punish themselves via food and inactivity.
Basically what I'm saying is that you should cherish really good BAs above rubies...