A czego się spodziewałeś? Rekurencja powoduje duże zużycie pamięci w porównaniu do normalnych skryptów. Jeśli masz możliwość zwiększ przydział pamięci dla skryptów w php.ini i po sprawie.
A to co ja mówię, to kwestia... wyrzucenia zmiennej $result oraz $wynik ze skryptu i w jednym miejscu zastąpienie jej przez echo

Jako że pokazałeś, iż mimo wszystko potrafisz coś sam od siebie zrobić ( zastosowanie implode ) to powiem, że wystarczy zrobić:
<?php
$uzywane = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U'); $ile = 10;
function skladaj( $collection, $depth, $prefix = '' ) {
foreach( $collection AS $char ) {
if( $depth > 1 ) {
skladaj($collection, $depth-1, $prefix.$char);
} else {
echo $prefix.$char.'<br />'; }
}
}
for($i=1; $i<=$ile; $i++)
skladaj( $uzywane, $i );
?>
Zwróć uwagę na funkcje ob_* w nowe wersji... Weź sobie je wykasuj i uruchom skrypt a potem wstaw ponownie i zobacz dlaczego się przydają. No i na bank zwiększa czas działania skryptu także w php.ini bo Ci sypnie przekroczeniem

U mnie przy zestawie liter od A do U jak powyżej i dla 10 znaków doleciało tylko do DTMOB w 60 sekund limitu