If you create an offer with a reference price it will create several marketoffers for all markets that we currently support, where we calculate a price for these markets based on the reference price. That way we ensure competiveness of the offer in different markets. With BatchUpdateOffers you can refer to the reference_price of offers which will eventually also retrigger the calculation of all marketprices. With BatchUpdateMarketOffer you can overwrite prices for specific markets, e.g. if you want to serve some markets with more competitive prices.