if this space is of interest, here's a five minute vid I did on testing in aws last year. https://www.youtube.com/watch?v=l-4qdyEm-YA
The thing you're calling "stubbing" (a usually local, working implementation of a subset of a service's functionality) is usually called using fakes. You describe Moto as a "stubbing" library, but it's neither a stubbing library nor a fake... it describes itself as a mocking library, and that's exactly what it is. You describe localstack as a stubbing library that combines "best of breed stubs"... but it's actually a collection of fakes built up from simpler fakes and mocks (their readme says "LocalStack builds on existing best-of-breed mocking/testing tools").
I don't know if you're purposefully using nonstandard terminology or if you're just mimicking how the terms are used inside Capital One, but since this video is educational, it seems irresponsible to diverge so far from industry-standard terms.
Please read https://martinfowler.com/articles/mocksArentStubs.html (particularly the The Difference Between Mocks and Stubs section) for a good description of how the terms are usually used.
Note, I don't think it's very important which terms are chosen to mean which thing. But we need some consistency. The fact that you're disagreeing with the terminology that's used in the readmes of the tools you're talking about should be a clue.
But stubs and fakes are roughly on opposite sides of the spectrum. Stubs are as simple as can be (doing nothing more than providing logic-free preprogrammed responses), and fakes actually work. There very word "stub" connotes that it's not a full thing, certainly not a thing that works. A stub arm is a tiny piece of an arm. Most of the arm is missing.
If we're going to call a fake a mock, fine... but let's not call a fake a stub. We don't need more confusion.