Firstly, orange does rhyme with a few words: there's the word 'sporange' in botany (and related words hypnosporange, macrosporange, and megasporange) whose American pronunciation rhymes with 'orange', there's a hill 'Blorenge' in Wales, and it has been claimed (perhaps humorously) that in some dialects, 'door-hinge' is pronounced to rhyme with 'orange'.
But this is not what you meant; you were asking about common English words. So the question is "What is so special about 'orange' that no other common words rhyme with it?"
Laura Wattenberg observes (bolding mine):
Here's a little pet peeve of mine: nothing rhymes with orange. You've heard that before, right? Orange is famous for its rhymelessness. There's even a comic strip called "Rhymes with Orange." Fine then, let me ask you something. What the heck rhymes with purple?
If you stop and think about it, you'll find that English is jam-packed with rhymeless common words. What rhymes with empty, or olive, or silver, or circle? You can even find plenty of one-syllable words like wolf, bulb, and beige. Yet orange somehow became notorious for its rhymelessness, with the curious result that people now assume its status is unique.
In fact, this notoriety of 'orange' is so unjustified that Wikipedia even has a long article called "List of English words without rhymes" — and it notes that the list is seriously incomplete (among words it includes are music, month, depth,…).
Mark Lieberman at the Language Log, in a post on Rhymes, tried a quick exercise classifying words into rhyme sets, and found that his script:
… revealed 50,344 rhyme equivalence classes (i.e. sets of rhyming words), of which 30,905 (61% of rhyme sets, 16% of words+pronunciations) are singletons.
In other words, 16% of words (about one in every six) have no rhymes at all! And among initial-stressed two-syllable words (like 'orange'), he found 26% of words had no rhymes at all.
Though he admits there are bugs in the definition of rhyme he used, and it needs more detailed study, the general answer to "What is special about orange?" stands clear: nothing is special at all. There are a great many words in English without rhymes, and for some reason 'orange' gets mentioned as if it's somehow unique. There's no reason to expect every word to have a rhyme, and it's unsurprising that many words don't — you don't have to look to whether a word violates the phonotactics of English!
Best Answer
The Oxford English Dictionary has this to say about donkey:
I'm inclined to accept dun as the source. Again the OED on dun:
The OED quotes sources for dun, such as:
But dun was also what the OED calls a quasi-proper name for any horse and quotes Chaucer:
Turning to the OED on the word monkey:
The OED doesn't speculate where the Roman/Italian word came from, but it has carried down into modern Spanish where the word for monkey is mono. The word man according to the OED includes old forms such as mon and monne. Whether the author of this entry didn't want to buy into Darwinian debate, or there's a good philological reason to discount any link between the words man and monkey I'll leave to the experts.
The suffix -kin, which appears to be the origin for -key in both monkey and donkey simply signifies kin, as in relation, or a group having common attributes. Hence (I'd suggest) donkey is kin to dun (horse), and monkey is kin to that class of animals (apes and perhaps man) formerly described as mone, monne and mona.
But yes, returning to the observation from the head of my comments here, the OED holds that donkey used to be pronounced 'done-key' rhyming with monkey as we currently say it. This assertion is based on the following verse by John Wolcot (1738-1819) in his 1790 poem (under the pseudonym Peter Pindar) 'Rowland for an Oliver':
Of course the rhyme may have been 'forced' rather than natural, but I simply quote the OED source in order to throw light on the OED's assertion.
As for the OED's speculation that the word donkey might have come from Duncan, a possible familiar name for an ass (but no references cited), it is interesting to speculate that the word could have actually moved in the other direction, that is to say Duncan being derived from dun-kin.