edlinfan[1], whose alias alone should 
give you a sense of his history with 
DOS[2], wrote me with an explanation 
of the syntactical differences between 
the GOTO and CALL commands in batch 
files[3].

Apparently, CALL was a late addition 
to DOS commands (at least post-dating 
DOS 3.3).

edlinfan explained that the proper 
syntax for GOTO has never required a 
colon. The weird thing is that with a 
few fantastically aggravating 
exceptions, GOTO was working *with* 
the colons in place, which is why the 
rare errors it produced were so hard 
to figure out.

He also offered an explanation for 
CALL's colon requirement: you can CALL 
a subroutine saved in a separate file. 
If you use the colon, it is clear that 
you are calling a label. If there's no 
colon, it's clear that a file is being 
called. That distinction isn't 
necessary in the case of GOTO, because 
you can't GOTO another file.

So thanks edlinfan! I think the 
mystery of GOTO, CALL, and the colon 
is satisfactorily resolved.
 

[1] gopher://edlinfan.duckdns.org:7000/1

[2] gopher://gopherpedia.com/0/Edlin

[3] gopher://zaibatsu.circumlunar.space/0/~visiblink/phlog/20210811