SQL: pivot non numeric data
This answer isn't dynamic, but shows you how to achieve the goal in pure TSQL, making it dynamic should be straightforward.
Essentially, you just need to add another column to spread the data out so that the MAX(fieldname) isn't the max for the event.  I've chosen to use a ROW_NUMBER partitioned by the EventID so that each entry for each event is also numbered.
I did also look at https://stackoverflow.com/questions/1343145/tsql-pivot-without-aggregate-function
DROP TABLE IF EXISTS ##Events 

CREATE TABLE ##Events 
    (
    EventID INT NOT NULL
    , FieldName VARCHAR(20) NOT NULL
    )

INSERT INTO ##Events 
    (EventID, FieldName)
VALUES (1, 'apple')
    , (1, 'paper')
    , (1, 'boy')
    , (2, 'banana')
    , (2, 'cat')
    , (3, 'girl')

;WITH CTE_RN AS 
    (
    SELECT EventID
        , FieldName 
        , RN = ROW_NUMBER() OVER (PARTITION BY EventID ORDER BY FieldName)
    FROM ##Events AS E
    )
SELECT [1]
    , [2]
    , [3]
FROM CTE_RN
    PIVOT (MAX(FieldName) FOR EventID IN ([1], [2], [3])) AS pvt