見かけ上はどちらも関数処理完了まで待機する形で同じですが

「同期の関数を呼んだ場合」
  →関数から戻って来るまでそのスレッドはブロックされる

「非同期の関数を呼んでawaitする場合」
  →そのスレッドがブロックされることはなく他にタスクがあれば並行して実行される

>>771
いいえ
その場合はそのタイミングで並行して実行されたら困るタスクを持たなければいいだけです

○ その時は他に並行して実行されるタスクを持たない
○ 並行して実行されてもよいタスクだけを他に持つ
○ 並行して実行されるタスクの動作に制限がかかるようにロック等を持つ
✕ 並行して実行されたら困るタスクを対策なしに他に持つ

選択肢はたくさんあります
これがプログラミングです