Yes you need access key for user exits. Enhancement spots are SAP's new feature of enabling enhancements by developers who dont have acess key in areas reserved for user exits.
The main advantage is that it is an enhancement and not modification, i.e. you don't touch the original SAP objects.
With user exits, you lock the object for development when access key for MV45AFZZ is being used. But if its being used by other also, then we will have to wait for every developer to complete his task and move the development before another developer can touch the same exit. At the same time, enhancement spots also raises the risk that the enhancements independently done by different developers may conflict.
The basic advantage is the enhancement option. Think of an enhancement option as a hook where you can attach the enhancement implementation elements to. If an SAP system provides these hooks, you can add an implementation element there at later stages of development in other system, without modifying the original SAP code.
This is possible because enhancement implementation elements are in a package of their own and transport objects in their own right. This way, you avoid all the trouble with modifications that stems from the fact that modifications are, from a technical point of view, part of the compilation unit they modify