When you access a primitive type you work directly on its value.
Symbols cannot be faithfully polyfilled, so they should not be used when targeting browsers/environments that don't support them natively.
When you access a complex type you work on a reference to its value.