Of course you can write a more complicated calculation algorithm, but it'll require tons of syscalls to determine the type of the file handle you're interacting with and will be probably very slow.
This is what rustup did inadvertently back in the day, and it caused NTFS to melt down to a halt because of stat() overhead [0].
Our disagreements stem from the assumption that the reported space is incorrect to begin with, but there's already "disk on space" note on every file, which provides physical size of something.
We can argue that the progress may be calculated over that number, but I still think it has its own limitations with performance.
There are some use cases that are computationally expensive to figure out and don't have a simple/easy answer to solve.
Hard links are a pathological case.