Em .net não precisa instalar o software do fabricante.
Será? De qualquer maneira, isso é devido ao tipo de interface que cada linguagem usa. Em .NET usa-se um encapsulamento da CryptoAPI, que deve ter uma interface padrão com o serviço SmartCard do Windows.
No Java, usa-se um encapsulamento da PKCS#5 API (se não me engano), e a PKCS#5 é a tal "dll do fabricante".
Como são interfaces diferentes, então os requisitos de funcionamento são diferentes.
Eu me lembro de ter usado um smartcard que precisava de qualquer forma que você instalasse alguma coisa do fabricante (era o driver para o leitor de smartcard e para o próprio smartcard), mesmo usando .NET. Como faz tempo que mexi nisso, pode ser que agora isso faça parte da interface padrão do serviço SmartCard.