When a Top Stories article has the source as an image instead of text, the JSON doesn't include the source field. This could be solved by using the image's alt text. Google is using full images as much as possible now, so most top stories articles lack the source.
When the source is shown as a favicon + text, the source field is right.
See the attached screenshots from search ID 6090f250ea1442bb34a7afbb for an example.