As I read this now, it seems odd that it's a user-facing configuration option because why would a user need to tune this if it's just based on the size of Spark's code.

It might be worth it to say something like "Constant amount of heap to reserve on executors for Spark's own code and user code. Taken into account before calculating memory available for and shuffle as configured in <code>spark.storage.memoryFraction</code> and <code>spark.shuffle.memoryFraction</code>." 

Then it's at least clear when users should change this, which is if they have a lot of user code.