thanks very much for looking into this and your thorough explanation of what's going wrong.
no_site is an interpreter flag that tells Python to import site.py when the interpreter is initialized. When PyXLL is initialized the import of site.py is deferred to allow pyxll-startup to be imported first. This seems like an oversight in a newer version of site.py (previously, and in the version I have been testing against) this check was not there as it's not needed (since it's just supposed to tell the interpreter whether to import site.py or not, not change the behavior of site.py once it is imported). I will look at how PyXLL can be modified to handle this change to site.py.
Perhaps a cleaner work around for now would be to import site.py in your pyxll-startup.py and just call main?
Having said that I don't see any problem with your hack (but I will resolve this no_site issue so it's not necessary).
Now the python path is being set correctly you shouldn't need to add the path explicitly to your config file. When PyXLL looks for the modules listed in the config file it looks on the python path, and it shouldn't matter if that comes from the default path, or added by site.py, or is included in the config. If the modules you want it to import are part of a package you can use the full module name in the config (e.g. mypackage.mymodule).
Thanks again for your help diagnosing this.
ps. yes, sorry about that
Mix up with the hosting provider that will hopefully be resolved soon!