The LoadPfx method actually calls HasPrivateKey before returning the newly-created Certificate instance, and throws an exception if it returns False, so the only reasonable explanation for the behavior you describe is that the HasPrivateKey returned True when it was called for the first time, but then returned False the second time.
Do you get the same behavior with all PFX files, or only for some?
I just tried loading a bunch of PFX files on Ubuntu 20.04.1 LTS (x64) with .NET 5.0 and the following application seems to be working fine:
Imports System
Module Program
Sub Main(args As String())
Dim CertLocal As String = args(0)
Dim CertPassword As String = args(1)
Dim ThisCert = Rebex.Security.Certificates.Certificate.LoadPfx(CertLocal, CertPassword)
If ThisCert.HasPrivateKey Then
Console.WriteLine("OK")
Else
Console.WriteLine("No private key")
End If
End Sub
End Module