Why API does not check uniqueness of custom field name

Please be aware that custom field name should be unique across dealFields or organisationFields and personFields. Currently, API allows to create more then one field with the same name, which does not make any sense.
As far as your model does not preserve field keys (aka does not allow to assign unique guid for the key), uniqueness of field name is the only condition of consistency across environments.

It is very common for Field names to not be required to be unique across custom Fields as (although you can’t specifically assign them) each Field has a unique ID related to its category and a unique Field API Key.

If Users wish to have multiple Fields with the name same, we don’t wish to hinder their ability to do so.

Yes, it is common case. And yes, it is possible to have the same name of custom field across deals/organisations/people field sets. But it does not make any sense to have the same name of parameter within one field set.
Current API forgives user mistakes allowing to create the same custom field name and type twice. Give me any example when user say I need 2 deal fields with the same field name and type.