The reason why you will find some (well, many) discrepancies between the ad library and Spy Hero is this: what Spy Hero considers an “ad” and what Facebook considers an “ad” are different things.
For Spy Hero, an “ad” is the same combination of: creative + headline + copy + lander.
For Facebook, it’s a particular ad id that a person creates inside an adset.
If Spy Hero says this ad has been running since a specific date, it means the first time this combo was first seen was back in that date, and it’s still being run (ie, it’s profitable), but this person might have made duplicates, stopped the original ad, stopped all ads for a couple of days, then relaunched again, etc.
To sum up: Spy Hero has “memory” and remembers the first time an ad was seen, whereas Facebook will just give you the info regarding a specific ad id.