On the Task object, the field whose label is "Assigned To" is actually the owner field (
OwnerId). This means that when the creating user assigns the Task, they also transfer ownership and thereby lose visibility to the Task unless they obtain that visibility through some other route.
The role hierarchy cascades visibility up, so the Sales Manager would be able to see this Task prior to being assigned to it, insofar as they sit above the Salesperson. It doesn't cascade back down, though, and it sounds like you would not wish to create a sharing rule that would, for example, share all of the Tasks assigned to the Sales Manager to the roles under them. That wouldn't be granular enough.
Unfortunately, I think the only route here that will fulfill the requirement in full generality and with the level of granular visibility you're looking for is Apex-managed Manual Sharing. This would entail writing a trigger to add a sharing row to the Task's creator at the point when ownership is transferred.
The sharing row would have
UserOrGroupId equal to the creator of the Task. The trigger handler would have to run
without sharing, or it'll throw an exception, because once ownership is transferred the original user doesn't have the right to add a sharing row.
You cannot use Apex Managed Sharing on standard objects, so what you'd be doing is using Apex to create manual share records. This comes with some notable drawbacks, including that the manual shares don't survive any further ownership transfers, so your code will need to be careful and defensive. Manual shares can also be removed by users who have permission to do so, like the Task owner.
There's an example of using Apex-managed manual sharing here in the Salesforce documentation, under "Creating User Managed Sharing Using Apex". Note the use of the
Manual, which identifies manual sharing rows.