2nd, in Jie Ting, 毛泽东评点道:“初战亮宜自临阵" and the writer interpret as 张合围困马谡之时,诸葛亮当北进街亭,策应马谡,与张合展开决战,战胜张合? 张合 was only the vanguard, the main force of 司马懿 hadn't arrive yet. if Zhuge Liang attack 张合 and 司马懿 speeds up, he would have faced a battle front and behind. Even if he broke through 张合 and retreated south through 街亭, he would have 司马懿 on his tail while 街亭 wasn't a place for fast retreat. The losses to supplies and morale would have been tremendous. He needed to save as much as he can for next time. He understood that he couldn't save 马谡 no matter what and the whole battle condition couldn't be salvaged now even by 北进街亭 to do final battle with 司马懿 therefore he strategically withdrew first. He did sent reinforcement after he knew 马谡's mistake but already guess it would be too late. He made the right call after made the mistake of using 马谡.
3rd, I believe 司马懿 only wish to defend and not attack Zhuge Liang in the last battle because everytime 司马懿 attacked Zhuge Liang, something ALWAYS goes wrong for him. Never mind that he was almost killed in the ambush Zhuge Liang had setup earlier against his last attack. He know in the past, Zhuge Liang always retreated because of supplies therefore all he need was wait it out. He could afford to wait because of Wei's strong economical foundation. Shu needed to fight fast and end fast. Perhaps Zhuge Liang was bit impatient so instead of the usual retreat, he went farming with his army and preparing for an prolonged war. I see that 司马懿 tactically is inferior to Zhuge Liang but strategically he is at least equal to him.