I remember some problems with snappy and HBase like this, like somehow an older version used by HBase ended up taking precedence in the app classloader and then it could not quite load properly, as it couldn't see the shared library in the parent classloader. This may be a manifestation of that one. I know there are certainly cases where there is no resolution to the conflict, since an app and Spark may use mutually incompatible versions of a dependency, and one will mess with the other if the Spark and app classloader are connected, no matter what their ordering.
For this toy example, you'd just not set the classpath setting since it isn't needed. For your app, if neither combination works, then your options are probably to harmonize library versions with Spark, or shade your copy of the library.