Are you trying to create a user before each test, such that each test gets its own user? If so you want BeforeAndAfterEach instead. BeforeAndAfterAll happens once for the whole suite, before any tests have happened. Then all tests can share the same user.
If BeforeAndAfterAll is indeed what you want, then my next question would be is createAndRegisterAUser actually finished by the time the method returns? If not, then that's likely where your race conditions lies.
If that's not it, then I'd ask have you synchronized access to the user var from your tests? If not, and those tests are run in different threads, Java's memory model does not guarantee that the reading threads will actually see the write done by beforeAll. The usual way, though, that you would have tests running in different threads is to use ParallelTestExecution, and I don't see you using that here. If you did use that, then it would create an instance of the test class for each test (ParallelTestExecution extends OneInstancePerTest), and that would solve your synchronization problem. So most likely that's not it either.
If solving this requires some more back and forth, it might be easier to figure it out on scalatest-users.