In the ideal world ranges would have been in the original standard, but there were two issues.
First, at the time the language did not have enough forwarding capabilities, so you would have needed a lot of overloads to handle const and non const containers.
Second getting anything approved in committee is a huge effort so often proposals are stripped to the bare minimum; in particular the STL was already huge and Stepanov tried to include only what he thought were the fundamental components.
The new ranges have been in development for almost 10 years (arguably they suffered a bit of mission creep), so it is not just a matter of adding range overloads for functions.