make `ExitStack`/`AsyncExitStack` not appear as abstract by KotlinIsland · Pull Request #15488 · python/typeshed
I think it's fair to assume that if the user explicitly specifies metaclass=ABCMeta on a class, that they've done this with the intention of marking the class as abstract, regardless of whether there are @abstractmethods present.
That's why these tools consider instantiating such classes to be a likely source of issues, or at least a code smell.
And yes, it's possible to do at runtime. But that doesn't mean that it's good idea to rely on it. Ruff, for example, reports errors in cases like this all the time.
This change avoids triggering false positives in tools that assume this with minimal downsides. So I don't see why this shouldn't be put in. Besides, this wouldn't be the first tool-specific code in typeshed (or any other stub packages for that matter).
Whether or not this behavior should be changed in the typing spec is a different story, but I don't see why that should be required here.