Hmm… “always” should mean “always”. Containers could fail and constantly restart, but not remaining stopped.
When you changed the restart policy to always, did you run docker compose up -d again?
You could check the restart policy of the container that yu see stopped this way:
docker container inspect CONTAINERNAME --format '{{ json .HostConfig.RestartPolicy }}'
It should return a json like this:
{"Name":"always","MaximumRetryCount":0}
As you cans ee, there is a MaximumRetryCount. If it is set, if some containers have dependencies that are not running yet or not ready for connection, the container could fail too many times. If the value is 0, the container should always restart and you should see it is restarting and not that it is stopped.