Read this wiki page to understand what the goal is:
https://en.wikipedia.org/wiki/Static_single_assignment_form
Basically, SSA-form allows certain optimizations that are harder without it, but SSA is also itself hard to apply. SSA examples are often posed in the form of simple variables, but real code has structs and arrays and maps and slices. So they mark things that are worth the effort of applying SSA to and things they've (the compiler writers, that is) have decided are not worth of pushing down to an SSA form.
So, the special purpose it serves is to enable a class of optimizations. And the difference from non-SSA-able values is simply one of cost/benefit. Non-SSA-able values are actually those where implementing SSA was deemed either not possible or too expensive (either in terms of time, or code, or just the compiler author's brainspace).
Here is a link to a talk from a Go developer about adding SSA to the compiler:
(P.S. if this ends up posting multiple times, I apologize. It has told me there was an error communicating with the server twice now.)