The short of the story is that they have a lot of overlap. What was called Information Architecture in the late 90s (Don Norman, Morville, Rosenfeld and of course Jakob Nielsen) became UX in the early 2000. The writings of Jesse Garrett as well as the adoption of Agile methodology created an explosion of ideas on how best to approach the design and implementation of software.
We quickly went away from using top-down waterfall software design methodology where BAs created use cases and Functional Requirement Designs that were discussed and signed off by business with little or no interaction between business and developer (and even less with the end user of the application).
All these ideas - continual testing; Agile methodology; Minimal Viable Products; came to the forefront in a short period of time. A key reason for this is that for the first time software was not limited to specific business or gaming based packages but available to everyone.
GDD puts an emphasis on understanding the needs and goals of users and then using these goals as the starting point. It merges with Agile design's "As a [x] I want to [y] in order to [z]." A key portion of the union is that in GDD one is using the user's feedback to arrive at the user stories and acceptance criteria as opposed to using the business user's.
And what makes GDD different than User-Centered Design? In practice nothing. I suppose, if you're taking a course then the instructor would want you to be able to point to which people and books/articles popularized one approach as opposed to another.
Ultimately the goal is putting your self in the shoes of the user.
Design Sprint
(medium.com/dallas-design-sprints/…). I believe the question about how they differentiate must include other aspects; eg: rather than the process, the objectives could be different.