Non ho mai provato una struttura del genere, almeno non in questo contesto (l'ho fatto recentemente in Angular ma non ho avoto problemi di questo tipo), l'impressione è che il DialogResult.OK si propaghi anche alla dialog intermedia facendola chiudere, hai provato nella form 1 a controllare il valore che hai alla chiusura della form 2?
poi nella seconda form io proverei ad intercettare la chiusura della terza come hai fatto nella prima