As explained in the Kotlin reference guide:
internal declarations become public in Java. Members of internal classes go
through name mangling, to make it harder to accidentally use them from Java and to allow overloading for members with the same signature that don't see each other according to Kotlin rules;
Looking at the generated bytecode of an internal class (com.example.Test with an internal field c) shows this:
Compile from "Test.kt"
public final class com.example.Test
minor version: 0
major version: 50
flags: ACC_PUBLIC, ACC_FINAL, ACC_SUPER
private final int c;
descriptor: I
flags: ACC_PRIVATE, ACC_FINAL
ConstantValue: int 3
public final int getC$Kotlin_debug();
descriptor: ()I
flags: ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: getfield #11 // Field c:I
4: ireturn
The internal field has a name-mangled getter, which could be used to target it with a ProGuard rule, but the internal class itself is just a plain public class in Java bytecode and there seems to be no way to target it specifically with ProGuard.