Второй способ будет работать как для статических, так и для динамических элементов.
Почему?
Поскольку вы делегируете выполнение обработчика события в контейнер .custom-tags-selector
. Обработчик будет выполняться до тех пор, пока щелкает любой потомок, для которого указанный селектор .js-tag-close
действителен, независимо от того, существует он или добавлен динамически.
Единственным условием является то, что контейнер, которому вы делегируете, существует в DOM, когда ваш код выполняется.
DEMO