best practice for add-on generation with many functions single file or split it up?
In my opinion you should always use multiple files for non-trivial addons (e.g. more than one operator).
I agree that it can be complicated in at first and I have to admit that it took me quite some time until I was able to create multi-file addons in a nice way.
BUT, a few months ago I developed an addon template for my Code Autocomplete addon that allows you to create multi-file addons very easily. Without having to care about reloading etc.
Since then I always use this template. Even as large addons as Animation Nodes and Code Autocomplete use it (and some others as well, e.g. this one).
Here is how I setup a new addon:

Create a new folder in Blenders addons directory. It's not super important but I suggest to use a name that can be a python identifier and all lower case.

Inside of this folder I create a _ init _.py file with this content.

Create a developer_utils.py file with this content.

Setup a git repository in that folder.


That's it. You can simply create more .py files in the folder now and all of them will be loaded and reloaded automatically. If you define operators, panels, ... inside of one of these files they will be registered as well (by the bpy.utils.register_module(_ name _) statement in the main file).
Ah and don't forget to create a _ init _.py file in each subdirectory. I generally keep them empty.
The Code Autocomplete addon can do the first 3 steps for you.
http://code-autocomplete-manual.readthedocs.org/en/latest/addon_development.html
So why should you use multiple files:

Much better support by version control systems like GIT.
The dependencies in your code are much clearer, because you have to import functions you want to use in a file. That makes refactoring much easier.
Easier to extend without cluttering existing code.
Better separation between parts of you addon like operators and ui.
Makes it possible to write reusable modules.
Easier to manage in modern code editors, because most of them use a folder as project (I personally use Atom atm and like it very much!).

In summary: I only see benefits in using multi-file addons and using the template I developed most of the difficulties are gone.