In theory from SC3 you can share only the bytecode generated by compiler (the .psb file), which should work out of the box. However in case of soldat, Shoozza asked me to implement a mechanism that would still verify if there's original source present, which will prevent bytecode loading if it's not found. He said that "private" or "closed source" scripts could possibly destroy scripting scene (because nobody would download/launch an unknown thing) or could be dangerous (pretty much same reasoning). So for now this file only serves a purpose of cache, so that server doesn't have to recompile sources over and over again.
However, if you convince Shoozza to change his mind, i'll be happy to remove that mechanics so that only .psb file can be shared.
In case you wanted to ask: What can be read from bytecode file?
IIRC it stores names off all function names (because server might want to call them, for instance events or CrossFunc()), all global variables (because server might want to check them or write to them) and all global types (not sure why is that). Body of functions is in some internal IL, all local variables are scrambled. There's also a decompiler bundled with pascalscript that can print all the info i've mentioned (that is, all global types, variable names and methods with their body written in "IL assembly").
As for the encryption that was already mentioned, it was broken long time ago. There is even some decryption tool available if you google long enough. So it'll secure your script, of course, but if somebody will want it hard enough, they can eventually get it*
*actually, decrypted SC2 script sources are kept in memory for entire server lifetime anyway so...