Não tenho certeza se isso é possível. Você certamente precisaria de um conhecimento profundo da sintaxe SQL do seu DBMS de destino. Por exemplo, em cima da minha cabeça, esta é uma única instrução MySQL:
INSERT INTO things
SELECT * FROM otherthings ON DUPLICATE KEY
UPDATE thingness=thingness+1
É provável que existam construções em alguns SGBDs que, sem um delimitador, podem ser ambíguas.
Acho que você pode ser forçado. É totalmente a maneira padrão de delimitar instruções SQL. Mesmo que você possa encontrar uma heurística para detectar pontos de provável início de instrução SQL, você corre o risco de desastres como uma cláusula "DELETE FROM things" acidental sem WHERE.
A dupla nova-linha-para-nova-instrução seria aceitável?
Não, mesmo com delimitadores de ponto e vírgula, regex não é nem de longe poderoso o suficiente para analisar SQL. Os pontos de problema incluiriam:
';'
";"
`;`
'\';'
''';'
-- ;
#;
/*;*/
e qualquer interposição dessas estruturas. Eca!