I think I've just decided to mostly not care about companies doing that. They're going to do it anyway (Facebook was reported as keeping shadow profiles for users who weren't signed up to the service and I presume they still do), so I may as well use their service and get whatever benefit I can from it. I'm only using it to check on tango events (what's on this Sunday, is this evening's happening, and that kind of thing) but that's worthwhile enough.
If I cared more I could use a separate web browser for Facebook or something, but I just don't care any more.
Facebook is collecting all this information because that's how it makes money, of course. I'm not that convinced their advert targeting is that much better because of all the information (or that Google's works that well), but they can apparently charge advertisers more on that basis.