No, it's really quite simple. It's the ethics and morality (and circuitous justification) of being upset by others giving that's complicated.
I built a friend of a friend a billing system for his fledgling business. Didn't charge a dime. I even got sucked in to support for much longer than I really wanted, since no good deed goes unpunished. Was it unethical of me to undercut the other people who might have wanted to provide those services for money?
I did some free consulting last week. A friend is starting a company and hasn't hired devs yet, so I met him for a half day and we worked on system architecture. I told him ahead of time that I was happy to do it for free. He had the money to pay a consultant, but every bit he saves now extends his runway. He bought me a beer. Unethical?
Last year my water heater failed catastrophically and dumped its water all over the floor. I went to my next door neighbor and said, "hey, is there a plumber you recommend around here?" and his response was "don't waste your money on a plumber. That's an easy job, and I can help. Let's go to Home Depot." He spent the whole day helping me. Literally took a paying job that I was planning to pay a plumber to do. Should plumbers be upset about their work being devalued?