Инъекция всегда работает, только когда вы позволяете guice иметь дело с созданием экземпляра.
Так что когда вы используете
@Inject
private A a;
Обнаружит, что ему нужны B и C, чтобы создать A и ввести его.
Но когда вы создаете экземпляр A самостоятельно, не имеет значения, если с помощью new
или с помощью builder()
guice не узнает о создании экземпляра, поэтому в вашем примере B и C будут нулевыми.