OK! After speaking with Erik Eidt (A specialist over at Codementor.io) he has found the issue:

There is missing a "after:=c" at the line "Set d = ..."

Sub ListAreas()    Dim a, c, d, typ, FA
     
    Columns(12).Insert
    Range("L4") = "Sub Category"
     
    For Each a In rAreas(Sheets("data").[B4])
        With a.Columns(9).Cells
            Set c = .Find("Competency", lookat:=xlPart)
            FA = c.Address
            Do
                c.Select
                If c.Offset(, 1) <> "" Then
                    c.Interior.ColorIndex = 6 'debug
                    typ = Trim(Split(c, "-")(0)) & " - " & c.Offset(, 1)
                    Set d = .Find(typ, after:=c, lookat:=xlWhole)
                    If Not d Is Nothing Then
                        d.Interior.ColorIndex = 7 'debug
                        d.Offset(, 1).Copy c.Offset(, 2)
                        d.Offset(, 3).Copy c.Offset(, 3)
                        c.Offset(, 2).Resize(, 2).WrapText = True
                        c.Rows.AutoFit
                    End If
                End If
                Set c = .Find("Competency", after:=c, lookat:=xlPart)
            Loop Until c.Address = FA
        End With
    Next a
End Sub
Now that I have added "after:=c" the code now works perfectly.

Thanks again to @mdmackillop and Erik Eidt at Codementor.io