どちらも結果は同じで「文字列のリスト」が得られますが、前者は処理が冗長で、しかも組み込み関数名を変数名に使っているという違いがあります。
上のコード
list = list(map(str,input().split()))
では
・input().split() で「文字列のリスト」を作る
・map(str, …) で各要素を str に変換する(もともと文字列なので意味がない)
・list(…) で map オブジェクトをリストにする
という三段階を踏んでいて、実質的に「無駄な処理」をしている形です。
一方、下のコード
list = input().split()
は input().split() の戻り値が最初から「文字列のリスト」なので、そのまま代入しており、シンプルで十分です。
また、どちらのコードも変数名に list を使っているため、組み込みの list 関数を上書きしてしまい、あまり良い書き方ではありません。実務では arr や s_list など別の名前を使うことをおすすめします。
模範解答で上が使われていたのは、おそらく「map と list を使って型変換しながらリストにする」という一般的な書き方(ふつうは int に変換する形)をそのまま流用しているためと考えられます。今回のケースでは、下の書き方でも正しく動作しています。