When submitting a form, you would need to have the user information separated from any other information anyway.
'users' => [
[user 1 data],
[user 2 data],
'something else' => [
So in your form request the logic to validate the users information would be namespaced.
'user.*.email' => 'required',
'user.*.name' => 'required|unique',
So if you do end up making users from some other point in your app, you could simply put the user validation rules on a parent request class or in a trait and merge them in any other rules needed for the request.
The static method on the User model would encapsulate all the logic for starting the transaction, looping through the users and firing the event. This way, if you did end up creating users from some other point in the app, it would be as easy as User::createBulk($data).