Why can't I disable or enable the block cache?
I know you asked "why?" not "can i get around that problem"... but you can get around that problem without removing modules that use hook_node_grants(). Try out the Block Cache Alter module. It allows, among other things, the ability to use block caching even if modules implement hook_node_grants().