I've asked around and according to Charles Williams (https://decisionmodels.com) this is due to the fact that the WorksheetFunction class does not correctly understand a couple of data types, including dates. To make it work, use the Value2 property, like so:
Sub MatchErrorDemo()
    Dim i As Integer
    Dim d As Variant
    d = Range("D2").Value2
    'Next line causes a Type mismatch error, whereas cell D3 yields the expected result
    i = Application.Match(d, Range("wrng2").Value2, -1)
End Sub