The reload() forces the import of a module even if its loaded already. This is not a bug: normally import checks if something is imported already and if so does not import it again to prevent executing a module twice. It does check whether the source (.py) or the compiled versions (.pyo or .pyc) are newer but in this case no such check is done as Blender keeps both source and bytecode internal and (apparently) does no time check (This might be called a bug but I not sure it is documented at all). Anyway, Blender does the right thing when reload() is called, so you might just use that as long as you are developing and remove it once the code is mature and installed.
Edit: I checked the source by way of documentation and if I understand it correctly an import does this:
use Pythons regular import (i.e. check for a file or .pyc .pyo )
if not succesful:
check whether there is a textblock
if there is and it is compiled: use compiled textblock
if there is and it is not compiled: compile it and use the compiled textblock
So it never checks whether the compiled version of a text block is older than the textblock itself. Also, once you have saved your textblock to an external file, that external file will be used, even if the internal textblock is altered (although this is flagged by the red sync button in the text editor)