There is no "best" way to do it, in a general sense.
That being said, hardware considerations can have an impact on the decision of which way to go.
For example, if you are running on something like an old HD3000 Intel GPU, you may have a decent amount of GPU ram, but the driver has limitations on how many active bound textures you have have at once (at least where OpenGL is concerned). This will cause serious issues with techniques such as deferred shading.
In such a case, a single, large texture would solve the problem, assuming that you have enough GPU ram to hold it, and all the other stuff (shaders, meshes etc) that you wish to use.
However this is unlikely to be the case in modern hardware, which supports 16-32 active bound textures.
Multiple textures have the advantage that you can choose which textures to have loaded, which improves flexibility, but with the drawback that you may have to load/unload textures to the GPU relatively frequently, which will affect performance. This is the preferred method of most game studios I have worked for, simply due to not having to support dated hardware, and that the PCI-E data bus is pretty fast.
However, being more specific to your case, you are talking about very small textures, vs one HD sized texture, so I doubt you would see any noticeable difference in performance either way. You would just have to write your shaders to accommodate the method you choose (mega texture uses UV offsets, whilst smaller textures have more work on the CPU side, in terms of binding texture units).
I appreciate this has not really answered your question, but as I opened with, there is no silver bullet approach.