n-gram Model - Why Smoothing? I am creating an n-gram model that will predict the next word after an n-gram (probably unigram, bigram and trigram) as coursework.

I have seen lots of explanations about HOW to deal with zero probabilities for when an n-gram within the test data was not found in the training data. I understand how 'add-one' smoothing and some other techniques work.

However, I can find nothing about WHY we need to take actions such as these.

For instance, if the test data has "Peace begins with a Smile" and this was not in the training data, so when I supply the model with "Peace begins with a", it will not come up with "Smile" end word. It may provide others or none. If there are none or they have a low probability, then I would supply the shorter n-gram of "begins with a" and see what words and probabilities that provides. If that fails, then "with a" and so on.

I suspect I'm missing something but can't see what.

Please can you help?
The purpose of smoothing is to prevent a language model from assigning zero probability to unseen events.

That is needed because in some cases, words can appear in the same context, but they didn't in your train set. Smoothing is a quite rough trick to make your model more generalizable and realistic. You can also see it as a tool to prevent overfitting.