In QGIS I can suggest using a "Virtual Layer" through
Layer > Add Layer > Add/Edit Virtual Layer...
Let's assume we have two polygon layers
'Layer_A' (brown) and
'Layer_B' (green) respectively, see image below.
With the following query, it is possible to achieve the result, i.e. to perform a spatial join and put the result comma separated in just one row.
SELECT a.*, GROUP_CONCAT(b.info) AS concat_b_info
FROM "Layer_B" AS b, "Layer_A" AS a
WHERE ST_INTERSECTS(a.geometry, b.geometry)
GROUP BY a.id
The output Virtual Layer will look like as following
As an alternative you may try the solution offered in this article "Summary Aggregate and Spatial Filters in QGIS". So, the expression in the Field Calculator for above example will look like: