Вы открываете новый выходной файл внутри цикла while, но не записываете в него данные, пока не достигнете условия $cl == $make_key.
$make_key = 10;
$cs = 0; //счетчик вход. файлов
$files = file("./data/phone.dat") or die ("Нету файла для крон !...");
foreach ($files as $file) {
$cl = 0; //текущая строка
$cf = 0; //текущий файл (выходной)
$outdir = './data3/';
$source = fopen($file, 'r');
$outhndl = fopen($outdir.'phone-'.$cs.'-'.$cf.'.dat', 'w');
while (!feof($source)) {
fputs($outhndl, fgets($source, 4096)); //записываем в новый файл что считали с входного
$cl++;
if ($cl == $make_key) { //как только набралось N строк
$cl = 0;
$cf++;
fclose($outhndl); //закрываем выходной файл
$outhndl = fopen($outdir.'phone-'.$cs.'-'.$cf.'.dat', 'w'); //открываем новый...
} //end if
} //end while
$cs++;
fclose($source);
fclose($outhndl);
}