div.wrapper w tym momencie nie odnosi się do niczego konkretnego. To klasa nadana divowi. Na ogół wrapperowi (czy też containerowi) następujący zapis:
.wrapper{
max-width: 960px;
width: 100%;
margin: 0 auto;
padding: 0 2%;
}
Efektem czego faktycznie służy on do wyśrodkowania treści na stronie w poziomie. Czy jest konieczny? Tak jak sam zauważyłeś, można zrobić to samo za pomocą znacznika body. Tylko co w przypadku gdy potrzebujesz czegoś poza zakresem wyśrodkowanych treści? Przy div.wrapper nie masz problemu, aby utworzyć zwykłego diva, w którym będziesz miał dostęp do pełnej szerokości ekranu (powszechnie nazywa się to container-fluid). Lepiej zostać przy rozwiązaniu gdzie stosujesz div.wrapper, ponieważ jest nieco bardziej elastyczne. Rzecz jasna nadając analogiczne wartości dla body możesz później działać za pomocą position, ale to trochę niewygodne.