Again, I must restate, value comes in many forms. Money is simply one. In these situations you truly aren't working for 'free'.
The main thing is to put limits and goals on such activities. My ex got into an industry where unpaid interns were a common thing and it kickstarted her career. She did have to walk away briefly before they offered her a (low) paid position, and they she had to walk away once more before she got a FT position. This wasn't going to happen any other way, and she absolutely flourished.
The client I worked for didn't pay for my time but they paid for the time of my mentor. I specifically had 4 months @ 20 hrs. per week, they paid him 5 hours per week - this was detailed in the contract. I had no experience in Rails at the time and I sure as heck didn't want to fail at my first time at bat. It was worth it to me to take something like that on vs. a low rate without that assistance.
But yes, if you're just getting started in software as a college student and taking an internship, of course you should be compensated as fairly as possible, because that in common in that context - if you don't, you are being exploited. Totally different thing.
1) It's an avenue for exploitation- if you did x for free for person A why won't you do y free for person B? What if this overtakes the time you need for your day job, which pays you and in turn enables you to work for free at your other gig?
2) It devalues the actual cost of labor. Why pay someone to build this when I can "pay someone with experience"? This complaint pops up a lot in graphic design work as well.
This isn't to say "don't do side projects" or "don't do open source"- with the latter, it's something you're doing for a community rather than one entity for a business intent. But it's reasonable to be cautious when someone says "we need a website that's like Uber for X for $0".