This is perfectly normal.
The ESP8266EX microcontroller on your module does not have ideal and perfect I/O pin circuits, no logic IC has. When your I/O pin is configured as an input, it will sink (take in) or source (drive out) a small current to whatever's driving it. This current is called the input leakage current, often IIL (I Input Leakage).
The ESP8266EX datasheet I have does not define the leakage current but other comparable logic IC technologies have typical figures of +/-3 uA, +/-10 uA max.
This means that when your TX output pin is driving LOW, for example, the RX input pin has a current of, say, up to 10 uA flowing out of RX, through the 1M resistor and into TX. The voltages at either end of the resistor are not large enough to push all 10 uA through the resistor but the resistor will still have a large voltage drop across it.
This stops RX being pulled to its required logic LOW voltage of (0.25 x VIO) <0.8 V approx. A similar problem happens when TX is logic high and RX is drawing an input leakage current through the resistor.
In fact, the voltage on RX will sit in the 'indeterminate' voltage range for the logic input pin: not low enough for a solid logic LOW, not high enough for a solid logic HIGH. Hence the shaky logic values on RX.
When you drop the resistor to 10K, even the 10 uA max. leakage current produces a drop of only 0.1 V across the resistor so your problem goes away: RX is pulled to a solid HIGH or LOW.
By the way, if you try to measure the voltage across the 1M resistor with a multimeter or oscilloscope, the input resistance of that equipment will draw relatively high currents from this circuit and you'll get wrong measurements.
In short: you can't use such a high resistor as 1M to link a logic output pin to a logic input pin.
If the ESP8266EX supports it, you can reduce the false triggering by configuring the RX input pin as a Schmitt trigger input.