I seem to vaguely recall that Linux distros used to not include it by default because it brought in a dependency on openssl.  Just checked on a clean Debian, though, and it's part of python-minimal now, so maybe it's no longer an issue.  Another scenario would be a source-built Python where the header files to openssl aren't found or available.  I think it probably is safest to assume it isn't always available.