Both the contractor and Facebook share blame, there's plenty to go around. The contractor obviously doesn't pay their workers enough for the area. Facebook is also the one hiring contracted labor to work in the same building as their employees without all sorts of benefits. AKA Facebook is the one who brought that class divide that already exists into their space so that's obviously on them. Facebook has plenty of power here, they could push FFS to pay FB cafeteria workers more or to allow for take your child to work day but they don't because they don't care, that makes them complicit in perpetuating the divide. I'd say what makes this situation bad enough to get its own article is the proximity. Not that the class divide isn't bad when it's hidden but it's situations like this, with rich right next to poor that bring up all those questions about our current bifurcated society that we don't like to talk about. The class divide in America is a problem and in Silicon Valley it's an even bigger problem. The lunch line at Facebook is just an amazingly salient illustration of that.
EDIT: And I would go even further to say that your comments here are an amazing illustration of the justification that happens by those on the upper end. First through a hackneyed attempt at saying "I've been there. It's not that bad." Then through indifference or this sort of broad appeal to "that's just how the market works" or "it's not Facebooks's responsibility" as if poor people just pop out of the aether and it's not our society which creates and allows for poor people to even exist in the first place!