Maybe not for DOS, but for CP/M it most certainly is true, since the length of a file in bytes is not stored anywhere. Only the number of (typically 128 byte) sectors.
For binary files, you just assume there is padding at the end of the file to the end of the sector. For text files, the SUB code was used to indicate where the file ended.
It’s not true, plenty of DOS programs stopped I/O operations with ctrl + z, and exited with ctrl + c.
What you are saying is that obviously there was no physical 1A byte to demarcate the end of the file, but 1A was used pretty much everywhere.
And it’s actually a non printable character:
https://en.m.wikipedia.org/wiki/Substitute_character
So I’m missing the point of this article, CTRL Z and CTRL D are obviously non printable characters and of course they are not used anymore to demarcate the actual end of a file.
It was sometimes used to have TYPE print something human readable and stop before the remaining (binary) file data would scroll everything away