Field collection translation structure: entity translation vs. node-type translation
It turned out that while I had field collections enabled in /admin/config/regional/entity_translation, the language must be set to "Language neutral" for field collections. This creates a single "und" row, and the child text fields can have their own entries for language.

Also, make sure the "Field Translation" setting is disabled for field collections under /admin/structure/types/manage/{your_content_type}/fields/{your field collection field}. This way, the field collections won't be translated, but the underlying text fields will be.