Is this logically right?
Yes, it's correct, since all characters in the empty string are unicode digits. (Or equivalently, no characters in the empty string are not unicode digits.)
It is what logicians call "vacuously true". It's like saying that all elephants in my apartment are green. It's true, since there are no elephants in my apartment.
Why do they see empty string as numeric?
The spec doesn't say that the string represents a number. It says that the string contains only unicode digits.
You say,
I'm confused because specification says: "Checks if the String contains only unicode digits." I don't see that "" contains digits....
A string contains only unicode digits, if and only if it does not contain non-unicode digits. The empty string clearly does not contain non-unicode digits, therefore it contains only unicode digits.