That's because your object cache isn't an endless bucket, it has limits and needs to purge old objects occasionally. This is different to the default behaviour because transients stored in wp_options are effectively endless (and long-lived even when they do have an expiration set!)
See this blog post on WPEngine for more information:
https://wpengine.com/2013/02/wordpress-transient-api/
This is why WP e-Commerce, WooCommerce etc. are _doing_it_wrong()
when they use transients to store cart sessions; those transients may be dropped at any time to find space to cache more recently accessed objects. Bear this in mind when using transients for storing things that you actually do care if you lose -- transients are, by definition, ephemeral and not a safe place to store information you depend on.
cheers,
Ross