Stripe Authorises payment before form validation causing problems
I believe this is correct behaviour.

The flow with Stripe is slightly opaque due to the complexity of maintaining a level of PCI compliance while using a CiviCRM form for payment.

The credit card part of the form is actually an iframe hosted with Stripe (that's what allows for the PCI compliance trick), which will take the credentials and test them by trying put a hold on the contribution amount, and then it'll pass back to the form a one-time "token" that can then be used to complete (capture) the payment.

That completion is only performed after the form is submitted, so it needs to have a reliable hold on the funds.

If you want the uncaptured hold to be release earlier, you can likely submit a PR and/or run the scheduled job more often.