I finally found the issue thanks to this github issue: when using a Form Request Validator you need to add this header
Accept: application/json
in order to Laravel to find the controller’s method.
TL;DR
// With a "Form Request Validator", the header "Accept: application/json" is mandatory, otherwise 404
public function store(StoreMovieRequest $request) {}
// With the model directly, the method/route is found even if header "Accept: application/json" is missing
public function store(Movie $movie) {}