I don't see any excuse whatsoever to take on an intern without paying them.
I think the closest I ever saw was when we brought a guy in for 3 days unpaid for him to learn on the system. He did no work in those 3 days, our company paid all his travel and food expenses, and he was pretty much guaranteed a job once the funding paperwork was filed. Personally, I would have preferred to pay him for the 3 days he was up, but then going somewhere to get free food is better than sitting at home paying for your own food ;-)
At least in the UK, there are plenty of opportunities to get funding for graduates. Call up your local universities and they will pay you to take people on.
My own internship was paid, with 2/3rds of my wage covered by my university. I'm now employed full-time here.
In summary, if you're looking for an internship, get one that pays. If nothing else, it shows other potential employers that you value your time appropriately.
I worked 20 hours a week in college (and my summers) mostly for free, and I don't regret a second of it. Learned more through those opportunities than anything that would have paid me.
If you're going to work at a tiny little startup of 2-3 people, maybe they can't pay you. Of course, maybe they shouldn't be hiring interns at that stage of the game. I worked as an intern for a startup that size, though, and they still paid me $15/hour.
If you're working somewhere larger, it only makes sense that they should pay you if you're doing work of value. Telling you it's all about the experience is like that oft-told story where clients want web designers to work for free, because it's "good exposure" and will "expand your portfolio".
As an intern, I've laid out, soldered, and debugged PCBs, designed and assembled test equipment setups, made fiber optic cables, tested cameras for surveillance drones, re-written UIs to use WPF, done significant kernel hacking, and published several papers, among other things. All of these tasks generated value for my employers, and it only makes sense that they should pay me for it.
That's just my 2 cents, though.
It's a common dodge in Australia to put people on as "trainees". I think it can be illegal if they aren't really being trained, and there's lots of other rules (like it must be an educational course requirement).
My understanding is that it's actually rare for tech companies to violate this law. But I have heard that it is common in the publishing industry. See: http://news.ycombinator.com/item?id=2412255
The one shop I've seen who didn't pay for interns was in upstate NY and only recruited from a small college nearby. It was hard to take them seriously with just that but when they said they didn't pay, the top students with options just walked away.
Not only are interns doing work but they're being trained and inducted into a company that they have a very high likelihood of returning to. It is a big win for the company if they can try you out at a discounted rate before hiring you full time.
But as a student, it's important to build valuable experience that you can quantify. If you can get that experience AND get paid at Amazon,Google, etc, then so be it! That's awesome.
But if you have an amazing opportunity to learn more, and have a greater impact at a smaller org, that pays less or nothing, then that could still be the best opportunity as an intern. (Not to mention, it could also prove to be more rewarding).
Don't get me wrong - if you're going to learn more AND get paid big bucks at one of the big companies, then that's the best opportunity in the world and you should never pass that up.
Being offered an unpaid internship should be a red flag. While it's possible for a tech company to have an intern around who does no useful work for the company, I find it unlikely. And, given that, any company that would willfully break labor law is probably going to be a bad place to work.
Ranking in terms of priority:
1) Paid + Learning = Jackpot.
2) Learning Only, Unpaid = Not as great, but at least you're building skills that will increase your value out of school.
3) Paid Only, Less Learning = Worst option. When it comes to full time hiring, people won't care that your internship paid you 15-30/hr. They'll care about what you've learned, what quantifiable skills you bring to the table, and proof that you're a mover and shaker.
All the internships I've done and folks I knew in CS/CE/EE, I don't recall anyone having an unpaid internship.