I don't know precisely. The special characters are
# $ % ^ & _ \ { }
The first six are in the upper row of the keyboard, together with @. I'm excluding those that are more commonly used in text, that is ! ( ) - + =. The other non alphabetic ASCII characters ([];:'"|,<.>/?) are used in text.
The choice of \ as the escape character for the commands is almost obvious; also quite obvious is ^ for superscripts and _ for subscripts.
Some programming or scripting languages use # for comments, but it's also commonly used to prefix a number, at least in the US, so it was reserved for prefixing argument placeholders. The & became the character for marking alignment points and so the choice for the comment character was between % and @. The first one won.
OK, there would still be $, but in the TeXbook, page 127, we read
we are using $ as the math bracket in this manual, in accord with the plain TeX format defined in Appendix B, because mathematics is supposedly expensive.