Migrating into a multi-value nested custom field
Turns out the answer on that page is correct, just out of date. Instead of Iterator, it needs sub_process. It also needs a nested array

To create the nested array, I start with a temporary field with the two items it needs

tmp_single_published:
  plugin: get
  source:
    - field_published_by
    - field_published_at


I then plug it into another array and process it.

published:
  plugin: sub_process
  source:
    - '@tmp_single_published'
  process:
    uid: '0'
    at: '1'


This worked for me