SOLVED: Read my post below for the solution. It was a simple mip mapping issue (caused by the discontinuity, but not where I expected to find the issue).
I need to calculate the UV coordinates from the world position, which I use to sample a temperature map texture to add snow to the terrain. I used the Atan2 formula described multiple places, including Wikipedia, but the discontinuity along the -x axis (approaches pi from one side an -pi from the other) leads to a pixel wide error region.

Here is the shader code:
float2 UV = float2( saturate(((atan2(position.z, position.x) / pi) + 1.0) / 2.0), (0.5-(asin(position.y)/pi)) );
And here is the C# version used elsewhere (including calculating the mesh.uv):
Vector3 d = position.normalized;
float u = Mathf.Clamp01((Mathf.Atan2(d.z, d.x) / (Mathf.PI) + 1f) * .5f);
float v = 0.5f - Mathf.Asin(d.y) / Mathf.PI;
I can’t use the mesh UV, as it’s used for both the terrain and objects. I realize that this is caused by the UV.x wrapping around from 1 back to 0, but as the texture wraps perfectly, forcing it to sample UV.x = 1 on one side and UV.x = 0 on the other side should still smoothly wrap. Any ideas on how to get around this discontinuity?
Here’s a sample shader using this UV for anyone to play with and test. I made it in ShaderForge, but I can write up a non-SF example too. Position To UV Shader (Dropbox)
Planet pictured here for reference:
