State of charge estimation
Using a Kalman filter alone would most likely not be that accurate unless a lot of battery specific algorithms are added.  The Maxim and TI solutions implement a lot of algorithms that model specific battery behaviors with regard to temperature dependence, aging, and charge/discharge rates. It would be very difficult to match their performance over the wide range of conditions batteries are subjected to.  

Besides accuracy, there are several other advantages of using a specific fuel gauge ICs. The power consumption of these fuel gauge ICs is much lower than a typical general purpose microcontroller.  This is very important for applications where a lot of time is spent in sleep mode because you don't want the fuel gauging algorithm to be waking up the MCU and become a significant consumer of power. 

The fuel gauges also provide a lot of additional features such as temperature, overcurrent, overvoltage alerts and also calculate parameters such as Time-to-empty (TTE), time-to-full (TTF), and capacity.  These may or may not be important for your application.

Full Disclosure: I work for Maxim on their fuel gauges.  If you were to ask me, I would recommend the MAX17055 as a good choice for many applications.  It implements a feature called Modelgauge m5 EZ which allows designs to be done  without battery testing and characterization.  Battery characterization is often required for many other ICs, and it can take a few weeks of test time.  Using one of these ICs is significantly easier than writing the algorithms from scratch!