The Ecobee app supports geofencing. You can create a HomeKit geofence to change the "comfort setting" when you approach your home. It's not as automatic as Nest's version, but it's probably less privacy-invasive.
Ecobee, like Nest, learns how long it takes your system to warm up or cool down, and tweaks its schedules accordingly. For instance, say you have an "overnight" comfort setting that reduces the temperature to 67°F in winter, and a "daytime" setting that's warmer (say 70°F), and you schedule the "daytime" setting to start at 8 a.m. If your furnace needs 20 minutes to raise the temperature those three degrees, the Ecobee will call for heat at 7:40 a.m. so that the house is at 70°F at 8 a.m. This is even more useful if you have hot-water or steam heat, which takes longer to heat up. It continually learns, so if your furnace gets more or less efficient (due to age, lack of service, a recent service, etc.) it will adjust.
It also learns if your heating system overshoots. For instance, hot-water and steam heat may continue to heat the house for some time after the boiler is shut off. The Ecobee will compensate, turning the call-for-heat off early so the air temperature doesn't overshoot your desired temperature.
These functions take a few weeks to learn your house's quirks, so the first few weeks may seem less comfortable, especially if you're switching from another smart thermostat (like Nest) that has already done its own learning.
Me, I find that my Ecobee reliably kicks the heat on just about the time I'm thinking "maybe it's starting to get just a bit colder than ideal." It does a great job maintaining comfort. The latest software even takes humidity into account—you're essentially setting the "feels-like" temperature.