In terms of which cards will support gaming freesync, this is likely something to do with hardware implemented frame pacing and possible XDMA implementation. Don't forget that if every gpu forward has hardware frame pacing and mostly people dumping money on new monitors will be on newer gpu's(particularly with the shift towards higher res screens finally) then ultimately programming for the current and future hardware becomes sensible and writing something new to support old hardware that needs different code becomes difficult.
When you look at how much effort MS put into the XO chip to enable something to happen with very low latency for Kinect, latency dependant things are often down to the hardware and thus implementing good frame pacing(which is ENTIRELY prediction based for Nvidia and AMD), is something hard to do with software due to latency problems.
Anyway, software isn't always possible for extremely latency sensitive situations like frame pacing, if it takes 3ms longer that is the difference between missing a frame update and not, it's make or break.
AMD said that variable refresh has been doable for a while, and it has because... it's ridiculously easy.
monitor side we are talking about updating the screen after the frame buffer is full or asking for a specific time to count before updating again, both insanely simple.
Cable side, DP simply has an extra channel, a simple piece of copper that can send a signal, that's it, nothing complex. It's just a case of monitors committing to listening to that signal. GPU side the variable refresh itself is literally just a case of having that extra channel hooked up to the gpu. Same way some gpu's have a dvi output but it is missing the analogue pass through, the pins/holes are there, they just aren't connected. So AMD some generations ago made their gpu's completely capable of sending the required message down that cable, this is trivial stuff.
Variable refresh rate itself does not provide smooth gaming, frame pacing is the MUCH more complex side of this, and Nvidia/AMD can do it in hardware and do it less well in software.
Nvidia has multiple patents, linked to in the original g-sync threads incorrectly stating they were patents on variable refresh, they aren't. It was patents on their method for monitoring rate of change of the frame rate. Not the current frame rate, but how big the change in frame times is. It's critical to smooth gaming and g-sync/freesync.
By the looks of things and which gpu's AMD is doing gaming freesync for, it's coupled to which gpu's have hardware frame pacing checking. On Nvidia this means some dedicated transistors on die that run hardware accelerated algorithms, from the patents they basically compare one frame to the last and compare pixel to pixel and decide how fast the rate of change is by how much of the image has changed, then keeping a buffer of the previous X number of frames and keeping a running guess on the next frame time.
Anyone that thinks frame pacing for either company isn't massively and deeply involved in prediction of frame time is incredibly badly mistaken.
It's a shame older gen cards don't support it, yet, it's possible in the future that they can improve the software enough to get the latency to where it needs to be be but software run comparisons will NEVER be able to beat a piece of dedicated circuitry that doesn't need to go back to the software to be checked on. it may get low enough that it's fine but hardware will always be better.