Another reason: BASIC had a GOTO statement to change program flow to any point in the code. There was no idea of nested blocks of code that executed conditionally. The GOSUB directive was only useful in some situations.
GOTO needed somewhere to jump to and the easiest thing to delineate was a line number.