Registry é mais adequado para isso do que Singleton, creio.
Registry não retorna a mesma instância do objeto que você criou, exemplo uma tela de cadastro de usuário, a pessoa preencheu o formulário mas nessa mesma tela chama outra e dá um Dispose na tela de cadastro momentaneamente ao retornar usando um singleton além de recuperar os dados e não precisar criar mais um montoado de objeto que são vários necesário para a criação de um objeto JFrame ou outro qualquer componente swing, se ganha em peformance e agilidade na visibilidade.
Dá uma olhada no Java Doc das classes e se tiver a oportunidade de conseguir o livro: The JFC Swing Tutorial Second Edition irá conferir o tem escrito lá.
Não é uma ordem mas um conselho que o pessoal da SUN dá!
Afinal cada componente tem sua finalidade e uso adequado.
Não sei que outros recursos são esses que o JFrame tem e o JDialog não tem (poderia exemplificar?), mas se você quer um form modal, JFrame não é adequado.
Um exemplo já que pediu: em um JDialog você pode adicionar paletas melhor que um JFrame; pois o componete foi desenvolvido para isso assim como o JTree foi pra árvores e etc.
Não cara, JInternalFrame é adequado para MDI. Não há nenhum problema em criar “cadastros, pesquisas, pesquisas para relatórios” e etc usando JInternalFrame, desde que o que seu cliente deseje seja uma interface com várias janelas abertas dentro de uma janela principal.
Concordo com o que quis dizer acima, eu não falei que seria um problema mas uma recomendação; questão de estética, tendo em vista várias aplicações desenvolvidas no mercado, é incomum o uso de janelas internas para CRUD`s, Relatórios, Gráficos e etc, esse costume desta forma era para os programas desenvolvidos na 2 geração por limitação e outro motivos, mas se for observar pelo mercado a grande maioria dos programas de terceira ou até mesmo quarta geração considerando Aspectos com esse status vai notar que não é comum usar Janelas internas.
Espero ter respondido as dúvidas.