When to use reverse and bind shells?

I know what a reverse shell does and what a bind shell is but I want to know when pen-testers or hackers use these shells. When reverse shells are useful and when using bind shells will be useful.