Creating multiple destinations from one source
I usually use D7 migrate. But from what i've read of D8 either of these approaches should work:


  My problem is the first migration. The Migration API wants to map a single source to a single destination. 


Option 1

In migration 1 simply import any encountered file into drupal. Then record the file id to a custom table of columns legacy_url, old_source_id, drupal_file_id for example in the complete() method of the migration.

In your second migration pass an array of drupal_file_id to your Node's file field from a select drupal_file_id from mytable where old_source_id = $old_source_id. This will attach the legacy files into the new Node. You may need still need to adjust any inline usage of images, or just use a view_mode to show the file list in D8.

Option 2

Just import articles (don't use a 1st migration for just files) and use complete() method in a migration to scan the HTML using DomDocument or simple_html_dom to find file urls and use the drupal API to save the remote file to drupal and then update the DOM with the new url. Create a custom rollback function to remove these files if needed.

Edit

Some example Drupal 8 file migration logic and classes can be seen at the following link. This may not address your exact issue, but in my opinion is good reference.
http://www.jeffgeerling.com/blog/2016/migrating-20000-images-audio-clips-and-video-clips-drupal-8