I can't quote you any widely known infamous failures, only stories from my own experience.
Back in the days, we were developing a Windows app, and we had no formal release process. Several times we had real trouble reproducing bugs which occurred regularly on a client machine, but never on most dev machines.
In some cases, this was due to different versions of the same system/environment libraries installed on different machines. In other cases, we couldn't track back which version of the code was actually running on the client machine in question.
Another issue was that often we couldn't tell easily to clients what features / bugfixes were released in which product version. We tried to keep track of these manually, but of course it was error-prone, and sometimes we had to make educated guesses. While I don't remember this having caused any concrete trouble with customers, it definitely felt bad.
In another company later, we already had a documented manual build process. Of course, as we were only humans, every now and then the guy who happened to create the actual build misunderstood or messed up something, like forgot to put a label on the actual version of the project in the SCM, or put the wrong label, or copied the wrong version of some file into the release package, etc. Needless to say, it caused us grief every time down the line.
In the end I decided to write a script to automate the release process. People only had to pass in a few parameters, and it did some parameter checking too. This drastically improved the quality of our builds, and soon producing releases became a non-issue, like it should be.