JSPM has a lot of really useful characteristics.
It includes System.js which is a polyfill for the future ES6-Module-Loader spec. It also supports importing AMD/CommonJS modules.
JSPM installs modules from the CLI the same way NPM does, except it's specifically geared for the client-side. Every module that gets downloaded (incl dependencies) is automatically mapped in a config.js file.
JSPM has its own registry but, unlike NPM, the registry is not a requirement. It's trivial to install modules directly from GitHub and NPM.
The module/dependency is flat (NPM is changing to this in V3) so there isn't any duplication of dependencies. It also supports multiple versions of a dependency if necessary so there's no 'dll hell' esque issues.
JSPM comes built-in with transpiler support for Babel, Traceur, and Typescript. Using them is as simple selecting one of the three during the 'jspm init' script.
It can also be used to build bundles and self-executing bundles (incl minify).
The best part is, it aims to directly support the future ES standards while also providing a bridge to use older packaging formats.
Browserify and Webpack are extremely popular at the moment but both will inevitably be replaced when the new module standards solidify.
How is it different from NPM ? since I just use it to do everything.
Edit: JSPM biggest strength is possibly that it supports a vast set of module loaders (AMD, CommonJS and ES6 modules).
Edit: Looks like there was a ninja edit since I started typing :)