Какие имена директорий сделать для крупного проекта?
Хранить ведущие нули в именах папок - лишнее. В целом решение вполне норм, вот только если пользователей, как вы написали, в перспективе станет 100 000+, то это это уже 100 000+ папок и опять возникает та же проблема.
Можно делать, например, как в git: берем хеш sha1 от данных файла, создаем папку из первых двух (или более) символов этого хеша, а внутрь заливаем данные. Получится что-то вроде:
/a4/b7fce097055c3cbd6879db9625f9a3890cc409.jpg
/a4/a66ce019422c3cbcbd69db9625f9a3890cda83.jpg
/8c/3c7fbcd903744b20fd7567a1fcefa99133b5bc.jpg
/e9/65047ad7c57865823c7d992b1d046ea66edf78.jpg
(Всего не более 256 папок)
Или если все файлы пронумерованы:
/a4/1.jpg
/a4/2.jpg
/8c/3.jpg
/e9/4.jpg
При таком подходе вы сами сможете регулировать количество папок, уровень вложенности и среднее число файлов в папках.
Папки организовать от id пользователя. Складывая по 1000 в каждую дочернюю. Т.е. принцип следующий:
/ceil($userId / 1000)/$userId/{files}
На выходе
/0/59/{files}
/1/1088/{files}
Этой организации хватит под ваш проект. Ни одна из директорий не превысит 1000 по содержимому и быстродействие сохраниться при вполне логичной структуре.