I've tried all of the frameworks and always hit the buffers somewhere and ended up wanting to do something they don't support.
While ESPhome isn't perfect, it does cover most things just with configuration, no code required. But where you do need to do something different, it has a couple of ways of integrating code very easily. You can include your own c++ file which gets compiled in and you have lambda functions in the config files.
ESPhome also has good facilities for including settings from other files. In conjunction with the fact that it supports a lot of different hardware, it means that I can have a single, flexible configuration base with all of the standard stuff in include files that work with lots of different platforms. I have 2 different types of ESP8266 and 3 or 4 ESP32 platforms that I am using it with already. If I were to add, lets say, a BH1750 light sensor and a BMP280 temp/humiity sensor to each of them, I only need to include the appropriate settings files and I get consistent MQTT outputs.
Also, 2 of my ESP32 platforms have display's built in and they are both supported directly by ESPhome with a standardised page configuration. So it is very easy to create multiple pages to show on my 3 button 320x240 M5Stack Basic. The ability to easily subscribe to MQTT topics and include those in the output also makes it pretty trivial to display data from all over the house.
It took a bit of setting up to get ESPhome working the way that I wanted and there are a few rough edges to ESPhome but it has been a much quicker move for me and has helped me produce a new generation of sensor platforms very quickly and consistently.
Of course, one final benefit would be that if, in the future, I wanted to use HA instead of Node-RED (yes unlikely I know) or if someone wanted help setting up sensors for HA, I have a standard, documented method that would let people quickly get their sensors going.
Oh, I also nearly forgot - the reason I looked at ESPhome in the first place was my annoyance with the excellent hardware but dreadful software for the 2 M5Stack devices I have (an Atom matrix and the Basic). These had been causing me no end of problems but work well with ESPhome with the 1 exception that I have an early Basic and the screen is colour inverted - I was easily able to go in and hack the ESPhome driver for the appropriate display to add another option with the screen colours inverted.
ESPhome even gives you an easy way to include new or override existing drivers.