I agree with the idea that you should take most seriously the decisions that will be hardest to undo.
However, using a database abstraction layer in this way is counter to optimizing for simplicity, and in a way is not making a decision at all.
If you are using a database abstraction layer so thoroughly that you really can switch between different database implementations, then you are almost certainly not leveraging the strengths of any underlying database engine to begin with. So you are limiting your performance, at the same time as introducing complexity.
However, using a database abstraction layer in this way is counter to optimizing for simplicity, and in a way is not making a decision at all.
If you are using a database abstraction layer so thoroughly that you really can switch between different database implementations, then you are almost certainly not leveraging the strengths of any underlying database engine to begin with. So you are limiting your performance, at the same time as introducing complexity.