> What is the reason why Lisp allows you to use the hyphen for an identifier name?
Lisp has only ~7 special characters: (, ), #, ', ", ` and wite-space. All others are valid as part of an identifier, alone or together. So for example "---" is a valid Lisp identifier, just as much as "aaa".
There is no subtraction operator in lisp. "-" is simply the name of a function in the standard library that implements addition (technically, it might be a special form and not a function, but that's beside the point).
> This overloads the subtraction operator. And it makes the code very confusing to read.
a-b-c in Lisp is unambiguously an operator. Subtraction would be (- c b a) - you can't really confuse these two.
Subjectively, I happen to think that hyphenated-names are much easier to read and type than camelCase or snake_case. I think most of the world agrees as well, since this is one of the more common typographical roles of the hyphen: joining words, such as 'pre-approved' or 'ill-defined'.