You are misunderstanding and/or misusing the phrases "active high" and "active low".
"Active high" means that a high logic level will invoke some behaviour, such as resetting a latch. "Active low" means that a low signal will invoke that behaviour.
In the context of wire-AND or diode-OR, or similar techniques, the terms "active high" and "active low" are inappropriate, but I understand that the terms have been misappropriated for use in this context. This may be a contentious issue (pun intended), but I would deliberately avoid using those terms in the context of a data bus such as I2C.
In a wire-AND scenario, you have a number of participants able to control (to a limited degree) the potential of some node. The mechanism is usually an open-collector or drain, and in such a scenario, any one of those collectors/drains may pull the node to ground potential, or not pull the node to ground potential.
This does not mean that the node is "active high" or "active low". It means only that the node is "pulled up" by some resistor, or current source, and that the only way any connected device has of signalling on that node is by pulling it low. Hence, the node is high only when all devices connected to that node are not pulling low, otherwise known as wire-AND.
There's no way for any of those connected devices to know if the bus is "occupied", in use by someone else, except to sense that it's currently low, which can only happen when some other device is pulling it there. Otherwise, bus contention cannot be detected without some seriously complicated hardware. If the potential of the bus is "high", there's no way of knowing if that's because no-one's using it, or if it's because the device using it is currently outputting a logic 1.
When a device attempts to use the bus the line will be pulled to 0 V. Now if any device attempts to use the bus at the same time, it will never be clear which device is transmitting.
This is correct. But it is also true that even if the bus is currently at logic high, you still can't know if another device is using it, or which device.
For such buses, like I2C, the only way to avoid bus contention is to have some protocol in place to coordinate who gets to say something and when.