Pues quedo mas claro el asunto, lo único que se me ocurre de momento es que uses alguna variable global de tipo TSTringList, donde guardes todos los Forms2 que abras, y en el OnActive del Form1 no verifiques si el Form2 correspondiente a ese Form1 esta abierto, si no que mas bien verifiques si ese Form2 esta en dicha lista, entonces... si su form2 esta en esa lista hay que devolver el foco al form2, pero si no (Ya que al cerrar el form2 lo eliminarías de dicha lista), pues ahora si liberar lo que quede de él si es necesario.
Espero me haya hecho entender y que te sirva, por lo menos de "Norte", mientras se piensa en algo mejor.