Depending on how large things are going to get, you could divide the DLL into logical blocks. To go one step further you could put interfaces between these logical blocks. This would enable you to recompile one logical block with out having to recompile the whole lot.
Keep in mind that large DLL's take longer to load.
My personal opinion is that if things can get grouped into logical blocks, make seperate DLL's. Except maybe for the smallest of functional blocks, but then I group these small functional blocks into there own DLL. Think of each of these DLLs as being a black box with defined inputs and outputs (the interfaces). When something goes wrong it is usually relatively easy to say, that black box did not do what it was to supposed to do. Now you know exactly where to go look.
Another thing against large DLL's is that it is far to easy to be undisciplined. The black boxes with there defined interfaces, in a way, forces you to write disciplined code, which leads to far easier debugging. The Big Viking