Answer
Check whether the container the custom fields live in (the subform/section itself, not just the individual fields) is actually approved — a subform that was never approved (as opposed to the individual custom fields, which can show as approved and published on their own) will prevent its custom fields from displaying at all, which can look exactly like a sudden, unexplained regression when it was actually never fully set up in the first place.