I think it’s the same sort of thing as allowing trailing commas when passing arguments to a function or in a struct definition. When you’ve got several branches with different patterns allowing that leading | probably leads to “nicer” looking code and less noisy diffs, while still being unambiguous to rustc's parser.

The first reason is that I was used to leading pipes in enum arms to begin with (OCaml style).

The reason to replicate the style in Rust (after discovering that it was valid Rust :)), is that I like to keep the coding style consistent no matter how big the code block is, and I have found that for huge enum matches, having the initial pipe makes the match more readable / easier to spot within the code, imho (patterns being between a pipe | and the arrow =>):