Проблема в том, что ваша функция addProduct изменяет старое состояние вместо создания нового.Да, у вас есть наблюдаемое, что оно снова отправляет состояние, но, поскольку он является тем же объектом, что и раньше, вызов setValue не имеет никакого эффекта, и, следовательно, реакция не повторяется.
Решение этой проблемы - сделать государство неизменным.Например:
import { ReplaySubject } from "rxjs";
let products = {};
export const products$ = new ReplaySubject(1);
export const addProduct = product => {
products = {...products, [product]: product};
products$.next(products);
};