Jelly, 1819 bytes
,!P€E
SṗLçÐfµḢḟ1ȯ1SṗLçÐfµḢḟ1ȯ1F
Quick and dirty. Very slow, even the 23!2!3!2!
test case is a stretch. I/O as lists of integers.
Explanation
,!P€E Helper link. Arguments: attempt, original
, Make the array [attempt, original].
Example: [[1,1,1,4], [2,3,2,0]]
! Take the factorial of each item.
Example: [[1,1,1,24], [2,6,2,1]]
P€ Take the product of each sublist.
Example: [24, 24]
E Check if the values are equal.
SṗLçÐfµḢḟ1ȯ1 SṗLçÐfµḢḟ1ȯ1F Main link. Arguments: original
S Find the sum S of the integers in the input.
L Find the number N of integers in the input.
ṗ Generate all lists containing N integers from 1 to S.
çÐf Take the lists whose factorial-product is the same as the original.
Ḣ Take the first match. This is the one with the most ones.
ḟ1 Remove any ones.
ȯ1 If there were only ones, return a listone withinstead.
F Turn into a onelist insteadif needed.