I disable " Blocks HTML output " cache from admin everyday, but when I see the next day, it is shown as "invalidated". I could not able to get what cron job or something else is enabling it.
You probably refreshed it, not disabled. When you disable it, it stays disabled.
This cache get invalid when some content entity has been modified: products, categories, pages or static blocks. Whenever a content object gets updated it triggers an observer. This observer lets you know which cache requires refreshing. However, Blocks HTML output is a bit special as it's kind of hard to determine which object exactly was updated if at all and whether or not the update was relevant for the cache.
For example if anyone purchases something from your store, the product entity gets updated because inventory level gets updated. Some stores choose to display stock status on product pages, which means that product page (and perhaps category pages, widgets and whatnot) needs to be updated as well. This is reason why the system says that this cache is invalidated. Most of times it's totally safe to ignore this notification.