The only language I know of where the presence of whitespace on blank lines matters is make(1). Even there, it's subtle. It's okay to have (using "cat -e" syntax)
foo : bar$ command$ $ command$
But there's a difference between
foo : bar$ $
which specifies an empty command and will therefore not use a default rule, and
foo : bar$ $
which does not specify any command and so will use a default rule if one exists.
(Of course, you can also get [ \t]\n inside an arbitrary binary file, too.)