The problem is that I think you cannot pull the MATIC wrap and unwrap directly from the polygon explorer. You need to go through the transaction and internal transactions. I wrote some Python code to do this some time ago.
Basically the way it works, I believe is like you said. Polygon explorer only tells you that you sent MATIC out, and you need to infer that you swapped it to WMATIC because you sent MATIC to the WMATIC contract. The same way, you could also infer the unwrapping on WMATIC in some other way that I don’t remember off hand.
However, I believe that this is a major flaw on Koinly to not have this implemented. Also, since this happens for Polygon I assume it also happens for every other blockchain, which is literally the only thing stopping me from purchasing this service. I made a couple of posts and even contacted support about this a couple months ago, but no definitive answer.