Pues no conozco una limitación, supongo que el limite lo pondrá el sistema operativo y que también dependerá de los recursos disponibles. Lo normal es utilizar un numero razonable.
Supongo que tu aplicación no sabe cuantos threads va a usar, así que me imagino que los threads se van creando a medida que el usuario/cliente los va solicitando. En ese caso siempre puedes llevar la cuenta de los que se están usando, y si llega a un limite fijado por ti, puedes esperar a que se cierre uno o mostrar un mensaje de error informando que no se pueden crear mas threads.
Para llevar la cuenta de cuantos threads se están utilizando, puedes usar algo como esto:
Código Delphi
[-]
var
ThreadsRunning: Integer;
InterlockedIncrement(ThreadsRunning);
InterlockedDecrement(ThreadsRunning);
if ThreadsRunning < Limite then
begin
end else ShowMessage('No puedo crear mas threads');