If we do not want withKeepBinary() flag to affect the way objects are passed to a cache store, then I think current approach with a cache configuration flag is better than having a separate interface for store.
With separate interfaces it is impossible to implement a 'universal' store which will properly handle both deserialized objects and binary objects, like our JDBC pojo store. Moreover, it is not clear to me what should happen if BinaryObjectStore is plugged and OptimizedMarshaller is set. This will force user to switch cache store implementation when marshaller changes, which does not sound right to me.
