The Java output is the DER encoding of the ASN.1 SubjectPublicKeyInfo, as specified in RFC 5280, section 4.1. The C# output is the DER encoding of the ASN.1 RSAPublicKey, as specific in many places include RFC 2313, section 7..
Here is an easy to use online ASN.1 decoder that I find convenient. You can paste the base64 directly into the form and get it decoded.
I'm not really a .NET expert, but hunting around I think you might get something closer, if not identical, by instead using the X509Certificate2 class. You can construct an X509Certificate2 object from an X509Certificate object. The X509Certificate2 class contains a PublicKey property that you can access. That object appears to have an EncodedKeyValue, and following this seemingly endless chain gets you the raw data. In other words, something like:
X509Certificate2 x509certificate2 = new X509Certificate2(data);
byte[] rsaPublicKey = x509certificate2.PublicKey.EncodedKeyValue.RawData;
should work. But I haven't tested it.