Если бы это был я - я бы забыл попытаться использовать столбцы boostrap и просто присвоить ширину css.
Это можно сделать простым javascript (особенно с использованием document.querySelectorAll ( ) селектор - но так как вы используете jquery - вот подход -
итерируйте по кнопкам и найдите максимальную ширину, сравнивая ширину каждой кнопки с максимальной шириной и, если она больше максимальной ширины - установка этой ширины как max-width.
Затем установите все кнопки на maxWidth и вуаля - все кнопки имеют ту же ширину, что и кнопка с самым длинным текстом.
Обратите внимание, что я удалил часть вашего кода только для этого фрагмента - а также переместил стиль в блок css - всегда лучше использовать exteranl css, чем встроенный для каждой кнопки. Если вам нужны разные стили для разных кнопок - примените разные классы с другим стилем.
let maxWidth = 0;
$('.btn').each(function(){
const width = parseFloat($(this).css('width'));
if(width > maxWidth) {maxWidth = width}
})
$('.btn').css('width', maxWidth +'px');
.btn {
background-color: #69C1DA;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="btn text-center btn-button button{{$button->parent_id}} hide" type="button">
<span>text</span>
</button>
<button class="btn text-center btn-button button{{$button->parent_id}} hide" type="button">
<span>longer text</span>
</button>
<button class="btn text-center btn-button button{{$button->parent_id}} hide" type="button" onclick="buttonFunction('button{{$button->id}}'">
<span> very very long text</span>
</button>
<button class="btn text-center btn-button button{{$button->parent_id}} hide" type="button">
<span>short text</span>
</button>