I reproduced your testcase in Mx 10.3.1 and the results are not like you describe.
In the case where the change with commit changes the boolean to true and this is followed by the change to false without commit, the result is that the database value is set to true (not to false).
The same result is adchieved when using the sub microflow case.
This woould be logical as in both cases the transaction is started at the begining of the triggered microflow and ended at the endpoitn of the triggered microflow. In the transaction there is just one commit in either case that will persist the true value to the database. The change to false is not committed to the database in the transaction and thus the result is as expected that the database value is ttrue for both cases. The commiits are not deferred to the end of the transaction. You should view the microflow including submicroflows as a transaction and the actions are all perfromed inside the transaction. The persisting to the database is deferred to the end of the transaction and dureing the transaction the changed values are available inside the transaction, only when committing the value is stored in the database when the transaction has finished. This causes the result of both cases to be that the boolean is set to true.