In programming languages that support the notion of source encodings,
you do have markers for 8-bit encodings. For example, in Python, you
can specify
# -*- coding: iso-8859-1 -*-
to denote the source encoding. In Perl, you write
use encoding "latin-1";
(with 'use utf8;' being a special-case shortcut).
In Java, you can specify the encoding through the -encoding argument
to javac. In gcc, you use -finput-charset (with the special case of
-fexec-charset and -fwide-exec-charset potentially being different).
So you *must* use encoding declarations in some languages; the UTF-8
signature is a particularly convenient way of doing so, since it allows
for uniformity across languages, with no need for the text editors to
parse all the different programming languages.