Attachment crrbv-20-fix-v1.patch is one possible fix for this issue. See the commit comments for some notes. The approach in that patch is a bit different than the one described in my previous comment.
The patch does not include a new test that fails without the fix but succeeds with it. The tests in the deftest named many-subvec-and-catvec-leads-to-exception at the link below, and the functions it calls, contain some test cases that fail without these changes, and work with them.
Removed crrbv-20-fix-v1.patch in favor of the slightly different crrbv-20-fix-v2.patch, which is the same except the new comments in the code are more accurate.
Without the patch crrbv-20-fix-v2.patch, the new test in patch crrbv-20-test-case-v1.patch fails (based on the code submitted by Mike Fikes in an earlier comment). With that patch, it succeeds.
Attachment crrbv-20-cljs-fix-v1.patch is the ClojureScript version of the added test case and fix.
Added clj and cljs failing tests, and clj and cljs fixes, with this commit:
Will close this issue after build.clojure.org confirms that the tests pass there, as well as they already have on my machine.