Перерегистрация сервисворкера обусловлена тем что сервисворкер должен быть всегда "свежим". Вы можете настроить перерегистрацию только когда код сервисворкера действительно поменялся, например сравнивая версию своего кода или каким-то иным способом.
Обновление данных необходимо в случае, когда пользователь очищает кэш браузера и делает unregister сервисворкеру.
Таким образом пользователю при повторном заходе выпишутся новые ключи вместо невалидных старых.
Endpoint url не является идентификатором устройства. Если вам необходимо отслеживать что подписавшееся устройство ранее уже было подписано - используйте специальные библиотеки (например
fingerprint) и передавая отпечаток вместе с подпиской сопоставляйте данные на бэкенде.
Однако старая подписка устройства становится недействительной при появлении новой, поэтому не бойтесь что на устройство придет несколько пушей.