Tasmota is firmware you can configure on-device[0] while ESPHome is a YAML-driven construction kit for compiling firmware specific to a device's configuration. Every change to the YAML is a compile-and-flash cycle.
Tasmota is only for Espressif platforms. ESPHome has expanded to support BK72xx, RTL87xx, and the Pico W, but good luck figuring out what's actually implemented on those platforms.
ESPHome supports more sensors/peripherals. Some ESPHome Components[1] simplify the combination of multiple sensors and peripherals to accomplish a task to basic YAML (check out the different Cover components).
Tasmota on ESP32 has an embedded scripting engine with REPL (Berry). ESPHome is... complicated[2]. Triggers, Actions, and Conditions can accomplish very simple automations in pure YAML. For more complicated tasks, you'll be writing C/C++ code.
ESPHome releases frequently. If you're using it with Home Assistant, it will constantly nag you to update ESPHome and all of your ESPHome devices. Tasmota releases every few months. Tasmota suggests not upgrading a device unless you have a particular need[3].
[0] Pre-compiled Tasmota binaries work for most purposes, but there are situations where you might need to compile your own to support less common features or devices.
Tasmota is only for Espressif platforms. ESPHome has expanded to support BK72xx, RTL87xx, and the Pico W, but good luck figuring out what's actually implemented on those platforms.
ESPHome supports more sensors/peripherals. Some ESPHome Components[1] simplify the combination of multiple sensors and peripherals to accomplish a task to basic YAML (check out the different Cover components).
Tasmota on ESP32 has an embedded scripting engine with REPL (Berry). ESPHome is... complicated[2]. Triggers, Actions, and Conditions can accomplish very simple automations in pure YAML. For more complicated tasks, you'll be writing C/C++ code.
ESPHome releases frequently. If you're using it with Home Assistant, it will constantly nag you to update ESPHome and all of your ESPHome devices. Tasmota releases every few months. Tasmota suggests not upgrading a device unless you have a particular need[3].
[0] Pre-compiled Tasmota binaries work for most purposes, but there are situations where you might need to compile your own to support less common features or devices.
[1] https://esphome.io/components/
[2] https://esphome.io/guides/automations
[3] https://tasmota.github.io/docs/Upgrading/