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