When I look at JSR-107 it seems apparent that the spec was designed for read-through / write-through caches and that the Cache API itself does not support ttl/expiry at the operation level which is a fundamental aspect of Couchbase operations, but I would like to understand Couchbase's specific reasons for not supporting the 12 year old spec that seems to keep evolving. I am not in favor of such a path but I am interested if it was considered and what the reasons might have been for rejecting a JSR-107 compliant implementation for Couchbase on the Java side.
One way of looking at it is : Couchbase is used by many different languages, and not only Java. Also the main API has been built at the top of the Memcached protocol and API (spymemcached). You can probably find JSR-107 wrapper for memcached and this could be used with Couchbase.
Since we did not any big push for the JSR 107 support, we had more questions to integrate Couchbase to Spring cache and it has been done. Also on a pure personal point of view, I have not seen lot of adoption of this specification... but this is just my personal experience.
Finally Couchbase is used also mostly as NoSQL Database and we have more requirements around Document oriented database.