net.minecraftforge.liquids.LiquidTank.fill(LiquidStack, boolean) does not check the amount of liquid passed for being > 0. This causes empty tanks to be filled with 0 of a liquid type, thus only accepting this type of liquid until it is drained again.
I do not know if this is intented behaviour, but as the Buildcraft Refinery seems to glitch because of this, I assume this to be a bug.
The simple solution would be to change the first line of that method to
if (resource == null || resource.itemID <= 0 || resource.amount <= 0) return 0;