Engines really push for a win in a dead-draw middlegame position, unlike humans who may agree on a draw. Why is that happening?
If an engine continues to play on in a drawn position, the reason is because it simply hasn't been given the heuristic to offer a draw in a dead drawn position. There are a couple of reasons a programmer may not program in such a heuristic:
1) Suppose an engine calculates that the game is a forced draw at depth 30, but to a human (or much weaker engine) the position is very complicated and not at all drawn. It wouldn't make sense to offer a draw here.
2) Making a heuristic that assesses whether a position is "dead drawn" may be non-trivial. What constitutes "dead drawn" versus an equal position? Quantifying this could be tricky.
It is not so much that engines "push for a win in a dead drawn position." Instead, they simply continue to play the most accurate moves--because they are engines and lack the volition to do anything else by virtue of their programming. Since it can be difficult for a human to continue to find the accurate drawing moves even in an equal position, especially when time trouble is a factor, the human simply feels as if the engine is pushing for a win.
The simple answer is that most engines are not programmed to offer a draw, nor to accept draw offers when made. Those that do are the rare exceptions. Furthermore, for such an engine to make/accept a draw offer, it must judge the position to be equal, which might not correspond with the human intuition for what a drawn position is.