La diferencia básica es construcción de la frase.
買い物をします significa "hecer las compras", o sea, "ir de compras". El verbo de esta frase es します/する HACER y el objeto es 買い物 COMPRAS, por eso se pone を después del objeto.
買います es del verbo 買う COMPRAR como ya sabes, y necesita objeto(s).
comprar algo/un libro/un café = 何かを/本を/コーヒーを買います。
Otros ejemplos de estas construcciones:
私はスペイン語を勉強します。Estudio el español.
(勉強する es verbo y スペイン語 es objeto.)
私はスペイン語の勉強をします。Hago el estudio del español.
(する es verbo, 勉強 es objeto, y スペイン語の es como adjetivo para 勉強(estudio).)
彼はサッカーを練習(れんしゅう)します。Él practica el fútbol.
(練習する es verbo y サッカー es objeto.)
彼はサッカーの練習をします。Él hace la práctica del fútbol.
する es verbo, 練習 es objeto, サッカーの es como adjetivo para 練習.)
Espero que te ayude y si todavía tienes duda, házmela saber.