Why does pre-sorted index not help me in window function?
You haven't shown that it doesn't spot the index, only that it doesn't use it.  If you set enable_sort = off; then what happens?
If the table is not well vacuumed and the correlation of team_id with the physical row ordering is low, then reading the index in order will mean hopping all over the table to check that each row from the index is actually visible, leading to the expectation of a lot of costly random IO.  This will be slower (or is expected to be slower) than a nice sequential scan followed by a sequential-IO-optimized sort.