You are kind of comparing apples and oranges.
sys.dm_exec_cached_plans looks at the plan_handle as such. There is one single plan handle for the module, and this one only changes if the module is dropped or altered. So its usecounts will keep on growing.
sys.dm_exec_query_stats has a row for every query within the plan handle. The plan for a single query can be replaced, but that will not change the plan handle. There are many possible reasons for statement recompile, including autostats. When a query recompiles, you can expect creation_time to be updated, plan_generation_num being incremented by 1, and execution_count to restart on 1.
As for why the plan is being evicted from the cache, a possible reason is memory pressure. But it could also be that someone runs DBCC FREEPROCCACHE or an sp_configure operation that clears the cache.