This is one of the pitfalls with having a shell mimic the OS API. It does create confusion. In this case you are confusing wait() (linux API) with wait (bash function).
Simply enough, Bash takes care of reaping processes for you, you don't generally need to think about this. The `wait` bash command has no effect on reaping processes.
When your child job terminates, bash will be informed via a SIGCHLD signal. This will when that happens bash will stop whatever it was doing for a moment and reap the stopped child. It then goes back to whatever it was doing.