Beside readability in database / SQL, I also think using string is more friendly for developer to add new custom states. 

Let's say Sylius has state `1` and `2`, and then a developer added a new custom state `3`. Few months later Sylius decided added a new state, `3`, then it creates a conflict in database. It is less likely to happen if we use string. (Of course this can be solved by migration... )