There is no "best" way. There is the way that is most appropriate for your program, in terms of code complexity, managing your data sets, performance, etc, and many of these are questions that only you can answer. If what you're currently doing runs well enough on your target platform(s), it'll do.
Having said that, you should consider the reason why sprite sheets exist in the first place. Their purpose is to address performance issues associated with large amounts of texture changes; by packing many sprites into a single texture, instead of using a separate texture for each sprite, we get to reduce the number of texture changes and (hopefully) increase performance.
From there it should be obvious that using many small sprite sheets is a step back from this towards having a separate texture for each sprite. However you need to balance that with the restriction of your hardware's maximum texture size and with the possibility of large amounts of unused space in a single large sprite sheet.