Passing an array activity_id to ActivityContact.create silently casts it to activity id 1
What happens is it silently updates activity id 1 with the new contact ids.
I think it would be better if it failed hard.
Where the cast is happening is in pear::DB because it's not expecting an array: https://github.com/civicrm/civicrm-packages/blob/c127df846491ee13b2a4dce5816f3da8b1d98d9a/DB/DataObject.php#L1224-L1231
It's the same in api3 and 4.