При повторном клике они переносятся туда-же, куда уже перенеслись.
Потому что вы как навесили обработчики на кнопки после загрузки страницы, так они там и остаются висеть.
Можно переписать с использованием
делегирования событий.
На родительский блок, который никуда не переносится, вешаете обработчик, который проверяет куда именно был клик
$('.stock, .published').on('click', '.transfer', function(){
let card = this.closest('.card');
if (card.closest('.stock')) {
$('.published').append(card);
} else {
$('.stock').append(card);
}
})