An MVCC conflict error will arise when overlapping transactions create a conflict that can only be resolved by killing one of the two transactions. The best example of this is when two transactions try to modify the same row(s). Overlapping transactions affecting different rows of the same table will not cause an MVCC error. It is best practices to insert retry logic for errors of this type into the application.
For most workloads, the primary reason for seeing the "Container MVCC conflict" error is that a later transaction has committed work in the same place. The most common reason for this is an INSERT statement, which does not acquire locks to do work, has completed a transaction while the earlier statement prepares to commit.
The "MVCC serializable scheduler conflict" error, on the other hand, arises when a user transaction conflicts with some system transaction (only system transactions use serializable isolation), such as a rebalancer action. This error can also result from writing to a relation during an ALTER.
To learn more about MVCC, please see our documentation: Concurrency Control