We had this same thing happen back in July. We had one user pay 6 times, getting the enrollment error every time. And they still never contacted us... we contacted them because we noticed when two other people reported the enrollment errors and I started checking our Stripe logs.
In our case, the issue was that the Canvas course was concluded/not open. We were reusing the same Canvas course and just adding new sections for future enrollment. We had both section dates and course dates set because we didn't fully understand the interactions of both and the course in question was just past the course date. So once I changed the course dates to match the new section the enrollments stopped failing. It was on me because I was supposed to remember to change the course dates but I was traveling out to InstructureCon that same week and things just got missed. BTW - I now know that we should not have had course dates if we were using section dates, but that's another story.
Anyway, after resolving that, and issuing refunds from Stripe, I manually invited the users to to the course/section in question and all was good. I also went into all of the extra Orders (in Catalog Analytics) and adjusted them to $0 and added the note why.
I have had extensive discussions with folks at Instructure about Catalog doing a better job at checking whether an enrollment will fail BEFORE sending it to payment processing. Or, at least check if the user already has a successful Order for that listing (the orders were showing in the Catalog Analytics for Orders) and just try to re-enroll without payment processing again. Something along those lines. I'm not sure if anything will be done about this. While I take most of the responsibility for what happened, a mature product shouldn't allow this to happen.
Hope this helps.
Adam