The issue is not that the bundleWithPath call is returning something unexpected. As you said, None is a valid return value for it.
This suggests that the client's machine has a strange version of python in which
print('hello, strange world')
hello strange world
I've never seen this myself, but it's the only explanation for what you are seeing, and there are a truckload of different python interpreters, so it's not shocking to me that one of them is a bit odd.
The commonly accepted practice for checking if a variable is None is to do so explicitly anyway -- it's a whole lot clearer to read, IMHO.
if mainBundle is not None:
The whole practice of coercing NoneType to False for boolean expressions leads to some weird and unclear semantics, especially when you have code that can produce True, False, or None.
I know this doesn't answer the "why" part of the question, but I'm chalking it up to a strange python version. It's hard to say more without having detailed information about the client's computer, or at least knowing the version of python being run.
thanks for your explanation - this makes sense (in a weird kind of way).