Hello Harry, thank you for getting in touch and for your support!
Regarding this situation, due to a limitation of Unity's transform and scale, the best possible solution would be to pass the values manually to the shader via scripting in order to accurately calculate the UVs.
As an alternate solution, you may use the TileShader sample that I'm sharing below, which includes a Parent Object Scale function that gets the Object Scale values from the world to object matrix, which are dependent on the relative size and rotations of the object's parent.
Simply use a Break to Components node and use its X and Z outputs in place of the Object Scale node.
Please let me know if this helps, thanks!