I ended up going to Google and not applying to Facebook. At the time, it was for pretty superficial reasons:

1. I didn't want to code PHP and probably would have to at Facebook, while Google's frontends are in C++, Java, and some Python.

2. I didn't want to work for Mark Zuckerburg.

3. If I wanted to do social networking, I'd much rather work for myself than for a big company.

After almost 4 years at Google, and having met several Facebookers here in Silicon Valley, I'd say there're a few major cultural differences though:

1. Facebook thrives on "Move fast and break things", while Google thrives on "Do the impossible". You will likely pump out features and launch things much more quickly at Facebook than at Google. However, many of those features will just be incremental tweaks on what's already there. Google's one of the few places where you can say "I have an idea that has a 5% chance of success, will take a year to investigate, but will radically change the world if it succeeds" and get buy-in from both management and your peers.

2. A while back, I read a comment here that divided the programming population into 3 groups. Developers focus on getting useful shit done, and will resort to duct tape and chicken wire if they need to. Engineers focus on scalable, maintainable, beautiful solutions, at the expense of time-to-market if necessary. Computer scientists focus interesting algorithms and pushing the state of the art forwards, regardless of usefulness. Facebook seems to be a largely developer-driven company (with some engineers backing them up in infrastructure), while Google usually has mixed teams of engineers and computer scientists.

3. You will likely learn more about technology at Google. The hybrid approach to research at Google means that you're frequently working with Ph.Ds at the very top of their fields, doing absolutely fascinating, science fiction research. You will likely learn more about the market and the realities of shipping software quickly under deadlines at Facebook.

4. Overall, I'd say that Facebook's market strategy is to use speed to move into markets before anyone else does, and then hold them through network effects and constant innovation. Google's market strategy is to use smarts & persistence to get into markets that nobody else can enter, and then hold them by holding onto the only talent that can produce a working system with products of that complexity. Both cultures are highly optimized for these strategies. Facebook tries to hire fast, driven engineers, work them hard, and take away any roadblocks or distractions to shipping new features. Google tries to hire either really smart, curious young engineers or world-leaders in their fields, put them together, and give them the freedom to work on world-changing problems. Google IMHO treats their employees slightly better because their market strategy is more dependent upon retaining employees.

For me, I'd already worked in startups before, so I'd done the "toss together a pile of hacks to get to market before we run out of funding" dance before and wanted to try something new. No regrets at all - I've learned a ton at Google, and it's probably opened up markets that I wouldn't be able to play in before if I choose to go found another company. Right now, I'm finding that the number of toys and smart people helping out within the Googleplex makes it more efficient to try the intrapreneurship thing, though.