You’re seeing two somewhat subtle, implicit things here:
Some methods on the TempClock class are meant to affect the global tempo clock - including clear. In the first class, you assign the class TempoClock to t, and the clear affects the global clock. In the second case, you create a newTempoClock and clear that.
When you play a Routine, it’s implicitly getting played on the global TempoClock if you don’t specify a clock as an argument to play. So, in your first case, clear affects the routine - in the second case, you’re clearing a different clock than the one your Routine is running on.
Generally you only need to create new clocks if you need to control scheduling on them separately from everything else, or in the case of TempoClock if you want tempo settings different than the global ones.
There’s nothing special about this clock, except that it’s assigned to TempoClock.default (meaning that it’s used when you play something without specifying a clock).
You can switch the default to a different clock by TempoClock.default = myOtherClock.