The helper function field_collection_field_formatter_links() assumes that the field it's rendering is on an entity which has already been created (and not 'brand new'). As such if I render a Field collection field on a node which is as-of-yet unsaved (i.e. without nid), then an "Add" link will get rendered (if configured to do so) which links to a broken page.
OK, this sounds like a very edge case - however you bump right into it with the following recipe:
1. Enable field_collection module
2. Create a field collection field - perhaps with Title, image, description and link sub-fields - putting it on a node type, say Page.
3. Use the Field extra widgets module and choose the "Read only" form widget for your field collection field (on Page node type Manage Fields UI)
4. Use the Field Collection Table module and configure your form widget to render the values of the field as a nice table. (Yay - a nice looking alternative to the nested-field-collection-embedded-subforms-of-doom =P)
5. This all works great, except we get our broken "Add" link rendered on the node/add page, I go to a URL which clearly assumes that there will always be a nid on the entity, it looks something like:
A conspicuously missing 'nid' value there.
There are two possible solutions here I think:
1. (Harder) Provide an alternative menu callback (which doesn't rely on an entity_id) which allows creating temporary field collection item values for use in as-of-yet-unsaved-brand-new-entity forms. This is, in principle, possible because the embedded widget allows creating values on brand new entities.
2. (Simpler) Just hide the darn Add link on entity creation forms, and only show it on the edit forms.
Patch for solution 2 to follow. If anyone wants to submit a patch for solution 1 they are welcome!