By keeping the 50-move rule/restriction, SF obviously chooses and plays suboptimal moves. Why do that? Is not the purpose of chess programming finding the best move?

SF will avoid the 50-move draw (which it internally scores as about +0.003) in favour of the far better move that keeps the pieces on the board in the hope of finding a real win._________________https://github.com/syzygy1/tb