If your user ID values are fairly uniformly distributed and the number will continue to increase, then you should probably balance up the tree a bit more.  What's best depends in part on where you think you'll end up in terms of numbers.  Big directories are slower to search than small ones.  While 800 files is not awful, it isn't great either.  If you want to stick with 2 tiers and you have N users (as your target population), then you should aim for sqrt(N) folders in the first tier, with sqrt(N) folders in each second tier directory.  For N = 80,000, that means about 300 folders per level.  If you want to consider a 3 tier arrangement, replace the square root with the cube root.  You might also find that using modulo arithmetic gives you a smoother distribution.  That is, the first level might be better calculated as:
var first_level = (int) ($user_id % 300);
Assuming your unidentified language uses % for its modulo operator.
CPAN uses a system based on 3 tiers: first tier is the first letter of the user's login ID; the second tier is the first two letters, and the third tier is the full login ID.
I read somewhere that some site (university-based, IIRC) found that first and last letter of name gave a good system.