The problem with tokens is that they can be implemented in a million different ways and still be standard compliant. Also as a partial result of that problem, it's very difficult to say whether a contract is a token contract or not - and different platforms estimate the correctness differently.
Let's have a look at the ERC721 standard: http://erc721.org/ . The only thing it basically states is a bunch of function signatures which need to be present. So if you want to analyze whether a contract (or more specifically, its bytecode) is an ERC721 compliant token contract you have to consider at least the following problems:
- Are all required functions present (this is easy to check)
- Are the function signatures correct (also easy to check)
- Do the functions return the right data (difficult to check as return values are not part of the signature). You'd basically have to run the function to see what it returns
- Do the functions emit the correct events. At least some ERC20 specifications state that emitting the required events inside certain functions is required - I'm unsure if ERC721 has such requirements. But verifying whether a contract always emits those events is almost impossible - what if it's coded so that it emits the event 999 of 1000 times, for example.
- Do the functions do what they are supposed to do? This is not strictly part of the standard but is commonly thought to be the case but almost impossible to verify.
So it's not straightforward to decide whether a contract is standard compliant and there is no 100% correct way to analyze it. That's why the numbers can vary quite a lot. Also there may be multiple exact copies of the same code and/or multiple versions of the same contract - it's up to the calculator to decide how these should be counted.
Here's some more info: How is a contract determined to be ERC20 compliant?