There remains a problem. You seem to think, that "Specified Elements" ist what it should be, i.e. the number of elements which had been explicitly assigned. I think, that this is not true. But it is the number of elements which are different from the default value instead.
Look at the following trivial code.
Step 1: Create a sparse array myArray with dimensions 10x10, default -1, and assigns some value not equal to -1 to element {5,4}. Then print all our ideas we have until now to get the number of specified elements. They all show 1 which is correct.
Step 2: Then we assign 0 (i.e different from the default) to element {4,3} and the specified elements are 2 now. With all our known solutions. Which is correct.
Step 3: Then we assign -1 (i.e the default) to element {3,2} and the specified elements are still 2 now. With all our known solutions. Which is wrong from my point of view. It should be 3. This proves that all our ideas for counting "specified elements" do not count those, but values different from the default instead.
myArray = SparseArray[{{5, 4} -> 4711}, {10, 10}, -1];
Print["1. ", myArray, ", ", Length[myArray["NonzeroValues"]], ", ",
Length[ArrayRules[myArray]] - 1];
myArray[[4, 3]] = 0;
Print["2. ", myArray, ", ", Length[myArray["NonzeroValues"]], ", ",
Length[ArrayRules[myArray]] - 1];
myArray[[3, 2]] = -1;
Print["3. ", myArray, ", ", Length[myArray["NonzeroValues"]], ", ",
Length[ArrayRules[myArray]] - 1];
1. SparseArray[Specified elements: 1
Dimensions: {10,10}
Default: -1
], 1, 1
2. SparseArray[Specified elements: 2
Dimensions: {10,10}
Default: -1
], 2, 2
3. SparseArray[Specified elements: 2
Dimensions: {10,10}
Default: -1
], 2, 2
This is a bit strange. But not a big problem. I will just use some nonsense-default for my sparse array which will never occur under the values stored within it. Say -1, Infinity, Null or the like.