Во-первых,
событие не срабатывает
- так не говорят, это безграмотно. События никогда не срабатывают. Срабатывают обработчики событий.
Во-вторых, давайте зайдём с другой стороны - откуда вы взяли, что установка даты должна иметь своим следствием возникновение события? Если задумаетесь над этим вопросом, то скорее всего обнаружите, что вы себе это нафантазировали. Это несерьёзно.
Если откроете документацию, то увидите, что там вам никто не обещает вызов onSelect при вызове setDate. Так что формальный ответ на ваш вопрос прост - ну, вот так datepicker устроен. Отвечая на незаданный, но подразумевающийся вами вопрос (как добиться срабатывания onSelect при вызове setDate) - можно соорудить костыль, подменив метод setDate, где будет вызываться исходный метод, а затем выполняться какое-то действие, которое приведёт к вызову onSelect. Например:
const oldSetDate = $.datepicker._setDate;
$.datepicker._setDate = function(...args) {
oldSetDate.apply(this, args);
setTimeout(() => args[0].input.find('.ui-datepicker-current-day').click());
};
https://jsfiddle.net/7zge4jv9/1/
UPD.
Заявка на данный функционал появилась ещё семь лет назад, но так ничего и не сделали. И не сделают уже, надо полагать.