This is by design and working as intended. Sprite renderers use dynamic batching by default. The sprites are batched together in one draw call, which is why position data is lost. See https://docs.unity3d.com/2021.3/Documentation/Manual/dynamic-batching.html for batching limitations.
If you require to use world position in your shaders, consider using SRP Batcher instead where per object data is preserved. This was added in 2023.1.0a11. See https://docs.unity3d.com/Manual/SRPBatcher.html for more information.