My best guess, and this assumption, since I cannot read the original minds of the developers, would they try to prevent quotes generated by the API from appearing in reports of abandoned carts.
The is_active flag is used to indicate the active price for the client, and the client should have only one active quote. The flag is also used to know when a quote can be automatically removed from the system, and the theory is that if the quote is inactive, it was converted to order and is no longer needed. If the Mage_Checkout Cart API sets the flag to false, then the quote is automatically cleared, perhaps before you convert it to an order. By setting the flag to false, it also does not allow you to use the API to create a live quote that the client can use in the external interface.
So, I would say if you use the API to create a quote for the client, you need to add the publish () method. If you use the API to modify an existing client quote, you will not run into a problem, since it appears only when creating a new quote.
In any case, I would personally think that the current behavior is an error due to cleanup procedures using this flag to indicate replaceable quotation marks.
source share