Garmin's maps have certainly gone downhill IMHO since 2012. IDK about tom tom, never had a reason to use them. I have the free Organic Maps which I thought used open street maps, and is offline capable, but search is horrible, and navigation isn't great either. The UI also is a mixed bag. TBH, I find Google Maps is the best for search and finding an actual location by name, but I prefer Waze or Garmin for routing display and information. I too often find any of them making what seems like elementary routing errors lately. I was just coming back from Massanutten, and Garmin for some reason wanted me to get off 81N to take what I assume is a very convoluted way through state college to Waverly vs spending 1 minute more staying on the interstate the whole way. This to a human is obviously stupid. I have had both try and take me to closed off roadways at Massanutten when heading out vs taking the main road to main road. And my last trip in Florida and Hilton Head the Garmin kept telling me locations were like one plaza over from where they actually were. I think I just used Waze in VA cause I didn't trust the last mile part of garmin after those 2 weeks.
So, FWIW, I went from having 2 options, one as a backup to needing to use two or more options for different parts of the trip. Some of this is exacerbated by me slowly learning a new car and Android Auto. A few days ago Waze just got in a spinning circle of death. After that it just refused to let me do anything but pick from a recent location - to go somewhere new I finally had to pick an old location, x out of it and then I could search. (this is all through Android Auto). Today I had to reboot my phone to get Waze to display any online maps. IDK when it downloaded offline maps, I wasn't told it was doing that, but I needed the traffic data to avoid a blockage on 81. So... IDK if it's me, my Oneplus phone, Android Auto, or Honda, but it's certainly a mixed bag.
The other thing I really hate, and reason I still have a separate garmin is when I'm driving a long trip, my passengers like to work, sleep, crochet, or look at their phones - but not always interact with me. To stay awake and alert, I find it very helpful to listen to a podcast. But I don't want to blast it over the car speakers disturbing my passengers. With bluetooth on my old Subaru, I could just change the in use audio device to a single ear bluetooth earpiece. Android auto makes it quite the struggle. In fact, I have to fight to disconnect it from the car, so lose all the Waze mapping etc. Sometimes I have to unplug my phone from the USB cable, sometimes I have to go to Android Auto notification and say disconnect. Why it randomly chooses between the two is a mystery to me. Honestly I don't understand why I can't send Android Auto maps to the car and audio to my bluetooth headset. It's annoying, the phone knows the headset is connected because that will cause it to start playing music over the car speakers. It is quite bizarre. But maybe I'm the only one who wants this sort of setup.