Lisp wasn’t originally supposed to have parentheses — or rather, it wasn’t supposed to have as many parentheses as it ended up having. Indeed, it’s rare to find a language that doesn’t use parentheses! I find, however, that when I use ALGOL-based languages (like C, Java, JavaScript, PHP, and Python), it’s actually crucial to use parentheses, because you cannot rely on your memory to remember operator precedence, at least beyond basic arithmetic operators, because even languages in this family don’t agree on precedence of operators.
But I’m getting off track. John McCarthy, the creator of Lisp, originally planned on creating a “Meta-language” that was much like FORTRAN, the only existing non-Assembly language available at the time. As a stepping stone to this language, however, he created a “Symbolic Expressions” that his “M-Expressions” would compile to, and he created a compiler for these “S-Expressions”. They were essentially abstract syntax trees made out of lists, and I’m not exactly sure if anyone knows why he chose parentheses for lists, rather than, say, square brackets or curly brackets (although it’s possible that curly brackets weren’t even available — C has a special “triglyph” notation for computers that don’t have curly brackets), but even so, if Lisp were created today, it’s not unreasonable to expect that parentheses would be chosen.
In any case, two things happened that derailed the path to getting to these “M-Expressions”. First, John McCarthy wrote a paper about a function called “EVAL” because he wanted to prove something mathematical about his language. One of his graduate students, one S.R. Russell, looked at it and said “Hey, I can implement that!” and McCarthy’s response was “Ho, ho! You’re confusing theory and practicality. There’s no need to implement this interpreter!” But Russell went and implemented it anyway — and thus Lisp became the first interpreted language.
Secondly, as more people used Lisp, they discovered that they liked the flexibility of being able to write programs as lists — and to use macros to be able to extend this language at will. They quickly decided that it was the parentheses was the key to this, and thus everyone kindof lost motivation to put effort into getting “M-Expressions” to work.
Frankly, parentheses aren’t necessarily crucial for getting Lisp to work. You can use any syntax for creating lists — including other kinds of brackets, or even Python-like whitespace. The power of Lisp comes from the fact that Lisp programs are essentially easy-to-manipulate lists that don’t have precedence to get in the way of that organization, and thus macros can be used to easily create a sub-language that’s just as “native” to the original language as any other construct, which, in turn, means that Lisp can quickly be altered to fit well with whatever problem you are trying to address.