Typical usage of MQTT allows anyone with a valid username/password to connect. They can then choose a client ID, which is used to persist their subscriptions incase they want to disconnect and reconnect again, and not miss anything.
By forcing users to use the web console to set up clients, you create an unnecessary extra step for use. The ‘skip replace’ option does not resolve this issue, because with that option enabled, any device who reconnects loses queued messages.
It is also incompatible with other bits of MQTT software - for example, Domoticz, which autogenerates a client ID and is not user configurable.
The solution for ‘dead’ client id’s is to just garbage collect them after some configurable timeout.