Why is it that the "ow" in now makes the /aʊ/ sound while "ow" in snow makes the /oʊ/ sound? Has this always been, was it spelled differently and then changed, or was it spelled this way but the sound changed?
The words now and snow have never rhymed in the history of English. Both of them are native English words; they did not come into English from Dutch or German. (Rather, English, Dutch and German all descend from a common ancestor, Proto-Germanic; that is why these three languages have similar words.) The different vowel sounds of these two words are spelled the same way only by coincidence.
The basic elements of Modern English spelling date back to Middle English, where we can already find the digraphs "ow" and "ou" used in many of the same words as in modern spelling. They are used in the Ellesmere manuscript of Chaucer's Canterbury tales, which is dated to around 1400:
Historically, U and V were not considered to be distinct letters, and the “double-U” W was only inconsistently distinguished from the single U (there was a lot of variation between U and W after vowel letters in particular). As a result, the digraphs “ow” and “ou” are usually equivalent in terms of pronunciation: both can be pronunced either as /aʊ/ (now, noun) or /oʊ/ (snow, soul).
The word snow comes from Old English snāw. (The spelling I’m using here for Old English is a modern standardization; historically, various spelling systems were used.) The Old English ā regularly developed to an “o” sound by the time of Middle English. This is what the spelling “snow” represents. In modern English, the “o” and “w” have merged into a diphthong /oʊ/.
The word now comes from Old English nū. So why is it not spelled with a "u" in Modern English? It’s because during the Middle English period, English spelling conventions were influenced by French ones.
In French, due to sound changes, the digraph “ou” came to be used to represent the /u/ sound. This French digraph (and the variant form “ow”) came to be used in English to represent the long /uː/ sound, which contrasted with the short /u/ sound spelled with the single letter “u.”
(A Practical Introduction to the History of English, by Juan José Calvo García de Leonardo and Miguel Fuster Márquez)
The long /uː/ sound changed in most words to become /aʊ/ during the Great Vowel Shift that marks the start of the Modern English period. In fact, this sound change forms a nice symmetrical pair with the change of long i from /iː/ to /aɪ/. But there are also some words in English where "ou" represents a sound closer to the French original: in words with "oup" like "group" and "croup" it represents /uː/, and in several words with "our," such as "tour" and "pour," it represents /ʊr/, /ʊə/, /uɚ/, /ɔ˞/, or /ɔː/, depending on the dialect. However, I can't think of any words where "ow" has these values.
So the two main pronunciations of the "ow" digraph (/oʊ/ and /aʊ/) generally have different historical origins (the first comes from the vowel "o" + the consonant "w," and the second from the French digraph "ou," originally used in English to represent a long /uː/). However, there are additional complications with words spelled with "ou," especially the “ough” words (for example, “bough” has /aʊ/ even though it didn’t have /uː/ in Old English).
The main reason for most of these cases (words looking alike but sound distinct) is origin.
That is, whence a word entered English and at what point it did so.
Although it has been pointed out that both 'now' and 'snow' came to English from Germanic languages, you can see that their respective counterparts in the original languages were quite distinct from one another:
now - from Dutch nu and German nun
snow - from Dutch sneeuw and German schnee
While in the Dutch origin, nu and sneeuw are quite different from each other, it is fairly easy to see how both would receive the -ow ending when merged into Modern English, since the spelling patterns in the Dutch words didn't really exist in English.
Likewise, the Dutch koe and German kuh became the English cow.
Existing local patterns of speech and spelling tend to prevail and alter loanwords so that they fit more comfortably into the receiving language.
Remember that when much of the Old English language was being formed, it was spoken by the majority but not often written due to low literacy. Therefore, the different pronunciations would have been apparent as overhangs from the origin languages but when later came the task of writing these words down, the spelling patterns would have been limited. Thus, a pattern such as -ow would have been assigned multiple sounds.
Further changes happened, even within the language, during 'The Great Vowel Shift' of the 1400s right through to the 1700s. During this time there were great changes in the aristocracy/ruling classes of England and as the people in charge changed, so did the country's prevalent language, with many of the updates being forced upon existing pronunciation.
With all this in mind, it is perhaps not so surprising that such complicated spelling-pronunciation patterns exist in the language.
For related reading, see this rather interesting Wikipedia article: Ough (orthography).
As you can see, the same letter combination having widely differing pronunciation is definitely not unique to the "ow" grapheme.
You have factors like dialectal differences, spelling reforms, foreign language influences/loanwords, even fashion (see: Europe during the 1500-1700s for more obvious such examples than you might readily notice today, since it might be more difficult to observe this from "the inside", and over a shorter timespan no less).
I think of English as primarily a spoken language. We spoke for a long time before we began to record. Spelling rules are a relatively new phenomenon. We have a large number of sounds, partly because we have borrowed so many words from other languages. If we attempted to have a different letter/letter combination for each sound, the written form would be unwieldy at best.