Why external ID removed in membership import in update mode?
The reason it doesn't work is that in CiviCRM, a contact may have more than one membership, so handling just external ID (or contact ID, at that rate) in update mode could be ambiguous.

I agree that it would be nice to take either of those, simply spitting out errors if it's actually a question of which membership to pick, but that hasn't been implemented.

To update memberships, do an export of existing memberships and get the membership ID, not the contact ID, for the ones you want to update.