Why is it 'speaking'/'speech' instead of 'speeking'/'speech' or 'speaking'/'speach'?
Solution 1:
There actually does seem to be an explanation for the different spellings of speak and speech, and it even covers why speech would have variant spellings with <ea>. The ancestors of these words had different vowels in Proto-Germanic.
The first thing you should know is that Middle English had two phonetic types of "long e": high-mid (this usually corresponds to a modern spelling with <ee>) and low-mid (this usually corresponds to a modern spelling with <ea>).
Speak
According to Wiktionary, the verb speak comes from Old English sprecan. The loss of the r is irregular, but the development of the vowel is regular. The "short e" of Old English was regularly lengthened in some contexts (this is called "open syllable lengthening") resulting in a long low-mid vowel in Middle English, which corresponds as I said to the spelling <ea> in modern English.
Speech
Wiktionary says speech comes from Old English sprǣċ, with a long vowel. The loss of the r is irregular, just as in speak, but the development of the vowel is actually expected to be variable and to have <ee> as a possible outcome. To explain why, we actually have to go back even further than Old English (at least, Old English in its standardized form).
According to Complete Works Of Geoffrey Chaucer, by W.W. Skeat, in Middle English the vowel height of "long e" could be "stable" or "unstable" depending on the source.
Long e corresponding to Old English (southern/Anglo-Saxon dialect) ē was stable and high-mid.
Long e corresponding to Old English (southern/Anglo-Saxon dialect) ǣ was stable and low-mid if it was from Proto-Germanic *ai in an umlauting environment.
Long e corresponding to Old English (southern/Anglo-Saxon dialect) ǣ was unstable, and could be either high-mid or low-mid in Middle English, if it came from the Proto-Germanic vowel corresponding to Gothic ē. (Skeat writes this PG vowel as "ǣ", but the modern convention seems to be to use *ē: Wiktionary gives *sprēkijō.) Specifically, Skeat says this vowel was usually low-mid in Middle English in the southern or A.S.-derived accents, while it was usually high-mid in Middle English in the Mercian or northern accents. Wikipedia also has a page that mentions this: https://en.wikipedia.org/wiki/Phonological_history_of_Old_English#Dialects
In many words, such as seed, deed, greedy, needle, modern spelling is based on the northern dialects rather than the southern. This also seems to be the case for the word speech.
Summary
According to Wiktionary, speak can be traced back to a PG verb *sprekaną while speech can be traced back to a PG noun *sprēkijō. In other words, they had different vowels. This is supported by evidence from other languages, like German sprechen "to speak" (with short /ɛ/) vs. Sprache "speech" (with long /aː/). I believe the vowel alternation in Proto-Germanic is due to the Proto-Indo-European process of ablaut, but that's just a guess.
The short vowel in the verb was lengthened in the Middle English period, a process which regularly resulted in low-mid long e which corresponds to the modern English spelling <ea>.
The long vowel in the noun developed differently in different dialects of Middle English. In the south, it was low-mid long e in Middle English. However, in the north, it developed to high-mid long e, which is the reason for the spelling with <ee> in Modern English.
Similar examples
A similar example of this kind of vowel alternation (but with different spelling) is the verb bear and the noun bier (which could be spelled beer, bere, bear in the past, according to the OED). The verb is from PG *ber- and the noun is from *PG *bēr-, as shown by the German cognate Bahre.