I'd be tempted to change this logic slightly. As it stands I can provide a coordinate (not on the cube) with metadata (see ```coord._as_defn()```) that partially matches a coordinate on the cube, e.g. different units and long_name, and it may or may not trigger the dimension to become unlimited depending on a combination of the other metadata and the logic in the  ```_get_coord_variable_name```. I propose allowing a name or coord and using the documented ```iris.coords()``` method with clearer logic to determine whether the corresponding dimension is set to unlimited. e.g.
```python
if isinstance(coord, basestring):
    coord = cube.coord(name=coord, dim_coords=True)
else:
    coord = cube.coord(coord=coord, dim_coords=True)
```
I appreciate the ```dim_coords=True``` isn't strictly needed here due to logic later on, but I feel it adds clarity putting it here. What do you think?