Не вяжется, потому что потолок в системе - не на сами потоки, а, видимо, на хэндлы объектов ядра.
А активные объекты кушают приличное количество хэндлов семафоров. Причем более одного на объект - еще и на каждый ожидающий объект, и т.п.
Вот прикиньте это количество - и понижение потолка вполне объяснится.

Я гарантирую одно - то, что в момент трепа 100 новый поток РЕАЛЬНО создать уже нельзя, CreateThread дает ошибку. А почему там он дает ошибку - нюансы поведения ОС.