There are two words written "roe" - they are homonyms (words of different origin that look and sound the same).
So, "roe" meaning "fish eggs" is one word, and "roe" meaning roe deer is another, unrelated word. Both are of Germanic origin, but they have different roots.
For the name of the deer, the terms "roe" and "roe deer" have coexisted since the Old English period. ("Old English" with a capital "O" is the name for the English language as spoken pre-1066, also known as "Anglo-Saxon".)
"Roe" and the "roe" of "roe deer" have the same Germanic root, but it is unclear whether "roe deer" was coined in Old English (by combining "roe" with "deer") or borrowed from Norse (the ancestor language of Danish, Norwegian, Swedish, Faroese and Icelandic; Norse was spoken by Danish settlers in some parts of early medieval England).
The reason for the continued existence of the term "roe deer" alongside the simpler term "roe" is probably that it's much clearer, given that "roe" is a monosyllable with other meanings (and also sounds identical to the word "row" in some of its meanings), and given that most people don't discuss deer that often.
(Note: In both Old English and Old Norse, "deer" just meant an animal, not necessarily a deer. "Roe" was the name of the specific animal. In origin, though, "roe" was probably a colour reference, possibly meaning "swarthy", "dusky" or "brownish".)