Основным преимуществом выделения стека является то, что вы получаете автоматическое управление памятью выделенного массива переменной длины. Поскольку управление памятью является одной из основных задач для любой программы на C, вам определенно следует использовать VLA, чтобы упростить вашу задачу, если можете.
Затем я буду рекомендовать вам последовательно использовать VLA, когда это возможно, и в противном случае использовать malloc только в том случае, если: вам нужно контролировать продолжительность хранилища, и если у вас очень большие выделения, и если вы хотите обрабатывать ошибок памяти изящно.