Facebook does support using Google Analytics for tracking ads. Their guide (no longer published) suggests that you use the Google Analytics URL builder with the following information:
- Website URL: Enter the URL of the web page that you’re going to create an ad for.
- Campaign Source: facebook
- Campaign Medium: cpc, cpm, ocpm
- Campaign Term: Type a descriptive term for your target audience
- Campaign Content: Type the name of the individual ad here.
- Campaign Name: Type the name of the Facebook ad campaign here
Then you should test your URL by coping it into your browser’s window. It will take you to your landing page. Go to "Google Analytics" -> "Traffic Sources" -> "Sources" -> "Campaign". You should see your click identified with your chosen campaign name.
Given that this is supported by Facebook, it seems unlikely that they are mangling the URLs as you suggest.
Having recently done some of my own advertising on Facebook that I track from Google Analytics, I have discovered that part of the problem is that Facebook sometimes charges you even when not sending users to your website. When Facebook sends a visitor to your website they call it a "website click". The number of website clicks Facebook reports match the number in Google Analytics (within a couple percent) for me.
Facebook also charges you for other clicks for which a visitor never makes it to your website: likes, shares, and comments. Make sure that you are excluding these items when trying to compare Facebook's data to Google Analytics data.