Решил. Если кому актуально будет:
// Можно в onUnmounted() добавить сброс с вашим коллбэком.
window.Telegram.WebApp.MainButton.offClick(/*same_callback*/)
// Как вариант можно создать массивы состояний под кнопки и чистить их по нужде
//....
const stateMainButton = useState<(() => void)[]>('mainButtonAction', () => []);
const stateSecondaryButton = useState<(() => void)[]>('secondaryButtonAction', () => []);
stateMainButton.value.forEach((handler) => $tg.MainButton.offClick(handler));
stateSecondaryButton.value.forEach((handler) => $tg.SecondaryButton.offClick(handler));
stateMainButton.value = [];
stateSecondaryButton.value = [];
//...