(1) The burden of proof
Research methodology requires that, unless you can provide evidence for a relation between two variables, you must assume that no such relation exists. Put differently, if you cannot demonstrate that your hypothesis of relatedness of two words is true, you must operate under the assumption of the null-hypothesis that the two words are not related. Or to use a legal metaphor, if you cannot prove beyond any reasonable doubt that the accused is guilty, you must let them go free.
There is no evidence that ash 'tree' and ash 'remains of fire' share a common historical root. We must therefore suppose that the two words are not related and that their homophony is a mere coincidence.
It is of course possible there is a relation between two variables and that there just isn't any empirical evidence to substantiate this. In other words, the hypothesis may be true even if you are not in a position to legitimately reject the null hypothesis. Or to use the legal metaphor again, the principle of "innocent until proven guilty" may sometimes result in guilty criminals who will not be convicted.
It is possible that, thousands of years ago, speakers of Proto-Indo-European or Proto-Germanic did indeed connect the roots that would eventually give rise to ash 'tree' and ash 'remains of fire'. But if so, this potential link is lost in the mists of time and we are now not justified to make this claim even if it might be true.
(2) Origins of the two words
The etymologies provided in the question are generally adequate.
However, in order to show the two forms of ash do indeed appear to be etymologically unrelated, I will offer my own summary:
(a) ash 'burned ashes'
Several prominent cognates of the word ash exist in North- and West-Gemanic: Old English æsce, Old High German aska, Old Norse aska. From this we can easily reconstruct North-West-Germanic *['as.ka].
However, the Gothic cognate is surprising - it is azgō.
This phenomenon looks very much like a Germanic consonant alternations explained by Verner’s Law (e.g. Ringe 2006: 275). Thus, the simplex n-stem, Primitive-Germanic *['as.kōn], may be a reanalysis of an originally complex word, perhaps derived or compounded, i.e. Proto-Germanic *['as] + *['gō-] forming *[as.'gō-].
What is the origin of *['as]? It's uncertain. One very good candidate is Proto-Indo-European * h2es- > * as- 'to burn, glow, dry up' (cf. Hittite ḫāššā- 'fireplace, hearth').
What is the origin of ['gō-]? This is extremely uncertain. There just isn't enough surviving material to determine what happened. All we know is that it's some extension with a velar. (e.g. Kronoon (2013: 38) suggests the source * dʰegʷʰ- 'burn'.) (Interestingly, the Armenian cognate also has a velar extension ačiwn 'ashes' so that further investigations of this word might shed light on the origin of the second element of the compound.)
Summary: ash 'remains of fire' probably comes from some kind of complex word, quite possibly the Proto-Indo-European stem for 'burn' + a velar extension of unknown nature.
Proto-Indo-European: ??? (extremely uncertain)
Proto-Germanic: ??? *[as.'go-] (uncertain, perhaps compound)
North-West-Germanic: *['as.ka] (certain, reanalysis as a simplex word)
Old English: æsce
Middle English asshe
Modern English: ash
(b) ash 'tree'
It is uncontroversial that this word derives from Proto-Indo-European * h3osk- > * osk- - the name for a common type of forest tree of Eurasia. The Proto-Indo-European * o regularly changes into * a in Germanic (e.g. Meier-Brügger 2002: 86), as in Latin quod English what etc., yielding * ask-. In West-Germanic, the word moved into the i-stem class, meaning that it took on the ending -iz. The earliest speakers of English, say c. 400 A.D., would have pronounced the word as *[ask.iz].
Summary: ash 'tree' goes back all the way to a Proto-Indo-European root with essentially the same meaning.
Proto-Indo-European: * h3osk- (certain, a simplex word)
West-Germanic: *['ask.iz] (certain)
Old English: æsc(e) (certain)
Middle English assh(e)
Modern English: ash
(3) The words may not be that similar
Because of the different etymological origins, the two senses of ash are actually pronounced differently in many Germanic languages.
Compare the different pronunciations in the following modern languages:
language |
ash 'burned residue' |
ash 'tree' |
German |
Asche |
Esche |
Dutch |
as |
es |
Swedish |
aska |
ask |
Faroese |
øska |
ask |
Gothic |
azgo |
* asks (unattested) |
Even in Middle English, the most common spelling for ash 'burned residue' would retain a final -e while most spelling for ash 'tree' would occur without such an ending (but there are many exceptions).
Thei shuln be ashe vndir the soole of ȝoure feet. (c1384 WBible(1), Dc 369(2))
A swyþe gret Asch. (c1300 SLeg.Kenelm, LdMisc 108)
References:
Ringe, Donald (2006) From Proto-Indo European to Proto-Germanic. Oxford: Oxford University Press.
Kroonen, Guus (2013), Etymological Dictionary of Proto-Germanic. Leiden: Brill.
Meier-Brügger, Michael (2002) Indogermanische Sprachwissenschaft. Berlin: De Gruyter.