Not pre-assigning the tasks to people is the correct approach in Scrum. The concept of "committing to the sprint goal" has been deprecated somewhat since the original version.
The idea is that when you finish a task you select the next highest priority one, rather than skipping over those pre-assigned to other developers. This means that if one Task ends up taking longer than expected, it doesn't hold up other high priority tasks.
It also prevents some human problems such as developers grabbing all the "good tasks" at the start of the sprint and leaving others with the boring or no tasks to do.
It promotes cross training and team work over key worker reliance.
In practice though I think there tends to end up being some unofficial task assignment. Developers end up owning 'their' code, I wouldn't try and enforce it too rigorously.
--Edit:
So from your comments it seems that your objection is based on the fact that without preassigned tasks individual developers don't have control of how much work they will individually have to complete for all the tasks in the sprint to be completed by the end of the sprint.
However, from a management perspective this is not a good thing.
- A fast developer that finishes all their tasks can go home early, even if a slow developer is still on their first one!
- A slower than expected task holds up high priority items assigned to the same developer
- Developers are not exposed to each others software. "I can't do that task its X's code"
- If a developer leaves/is ill/on holiday who does their tasks?
Management wants the most high priority task in a sprint to be finished as possible. Pre-assigning works against that.
Also, estimation is a problem. With preassigned tasks, if i estimate that my tasks are all super hard and I can only fit 2 in the next sprint, but somehow, someway I work extra hard and struggle to get them both finished on time there is no way to know whether I worked really hard, or just overestimated the tasks and took it easy.
The developers are incentivised to over estimate.
With a pool of unassigned tasks the estimation is shared amongst the team and the 'best' developer is the one who completes the most points.
The developers are incentivised to estimate fairly and complete tasks