Почему FormRequest в Laravel выбрасывает ValidationException вместо массива с ошибками?
Потому что так он устроен. Это исключение должно перехватываться обработчиком ошибок и он уже сгенерирует нужный ответ — json или редирект. Что вы там такое понаписали, что он этого не делает — вопрос к вам.
Документацию не читаете по идеологическим причинам или религиозным?
https://laravel.com/api/5.7/Illuminate/Foundation/...
Добавьте в файл метод failedValidation() для обработки ошибок.
---
Может, данная статья поможет.