Now I understand. Program modules do not export identifiers, as unit interface sections do. So the only way to have a global variable, in the sense of visible to all modules (the program and the units), is to declare it in the interface section of a unit, which must be included in the uses clause of all modules.
That's right, with one caveat. This is /highly/ implementation-specific, but in some cases you can export an identifier (e.g. a function name) from the main unit, and use that as an entry point if e.g. a dynamically-loaded library wants to call back into the main program.
I emphasise, however, that that is outside the Pascal language as defined. So as you say, if you need a globally-accessible variable visible to the main program then you have to put something in the interface part of some other unit: as a particular case, that's what the Lazarus IDE does with the variables representing GUI forms/windows.
I say "something" above advisedly, since it might either be a variable or a property (the latter case allowing a certain amount of access control.
HTH
MarkMLl