Which parameter is active when redefined?

In reply to whwjez:

They remain independent parameters with independent values defined in separate scopes.

You would need to use a parameter override in the instantiation

B #(.ADDR_WIDTH(ADDR_WIDTH)) B_inst();

In that case 10 becomes the overriding value.