I think a good team lead is patient and can explain concepts concisely. They're willing to sit down and pair up with you to solve problems, and defend you from work that is over your head when necessary.
I was migrating a set of applications from one server platform to another (FUSE to Tomcat), it was a touchy install and we ended up backing it out. But we stayed up until 1am at the office trying to figure it out and he didn't complain about it once. The amount of patience was profound and I'll never forget it.
Totally agree that this is another key for a tech lead.
I think it depends on the team and company dynamics that govern how much a team lead should 'sit and pair' with a developer.
For me personally, if there's something mission critical, and I am able to help out and stay late, I'll probably do it. Part of a tech lead is responsibly and accountability....but all within reason.
I have also been on teams with some very inexperienced devs that required way too much 'teaching and pairing' that I could do at that given moment. Mentoring/coaching is one thing, but a tech lead isn't a teacher in the literal sense...b/c their teaching is a balance given the overarching goals and progress of the team itself.
It is nice of them to stay with you and help, but I would question the culture in this workplace. The proper solution from my point view would be to say: "Let's go home and continue tomorrow together".
That's the culture at my workplace. While there are a few developers who stay late, the vast majority of us have no difficulty walking away and going home. We even encourage it.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.