Почему проверка прокси стабильнее через потоки чем через асинхронщину?
Потому что в асинхронщине вы не можете быть уверены через какой прокси идет очередной запрос. Да он поддерживает прокси но для всех Запросов. В итоге вы посылаете на проверку 10 проксей а по факту проверяется только один, потому и такой большой процент отказов. Для проверки проксей каждый запрос должен быть изолирован.
И вот, спустя полгода, я понял, что в aiohttp стоит ограничение на кол-во одновременных соединений by default. Решение:
from aiohttp import ClientSession, TCPConnector

async with ClientSession(connector=TCPConnector(limit=0)) as session:
    ...