Zeppelin or the SparkInterpreter should, at launch, check to confirm that the current SPARK_HOME matches the same version of Spark that was used when Zeppelin was built.
If Zeppelin is run with a different Spark version in SPARK_HOME than was used when Zeppelin was built, attempting to start spark from the SparkInterpreter is likely to fail with an exception. But the exception varies depending on the particular version-mismatch (class not found, method not found, inconsistent dependency library versions, etc.), and none of the error messages are helpful.
The correct behavior is to detect this and fail early – or at least report it properly.