An elasticsearch index is comprised of shards, which are comprised of segments. Snapshots are incremental at the segment level. As subsequent snapshots are taken, Elasticsearch compares the list of segments currently stored in the repository to the segments in the index (or indices) being snapshotted, and only copies new segments. Additionally, the new snapshot adds pointers to the existing segments, so that a restore of said snapshot will restore the new segments as well as the older, existing ones.
What this means is that when you delete a single snapshot, unless it deletes all references (or pointers) to all of the segments, they are not deleted. To repeat: segment files are not deleted from the repository until all pointers/references to those segments are also deleted. Only segments which are no longer referenced by a snapshot are deleted.
I believe this is what you are experiencing: You are deleting a snapshot or some snapshots, but not all snapshots referencing the segments you want deleted.