For the first question, exactly speaking, the context of the maxTachyon here is just the same as the maxMemory in the existing code. It is limits the max data size  that can be used by one executor. As you mentioned, adding this limitation can make it safe and flexible.

The second question is a great one. Mostly we can specify the maxTachyon based on the storage size of our Tachyon store. If the rdds put in the tachyon exceeded maxTachyon, we will try to ensure space to decide whether to put it in tachyon. The policy here is the same as the memory store. You can see the ensureFreeSpace function in the org.apache.spark.storage.TachyonStore class.