Why does creating database snapshot fail unless user is db_owner or sysadmin? MSDN suggests it should work
In order to be able to create a database snapshot, you will need CREATE DATABASE permissions as well as db_owner on the database you want to snapshot. I have tested this and it works perfectly fine.   

The other solution is to grant dbcreator server role to the login that needs this privilege. This works too.

It seems that with 'Any user who can create a database can create a database snapshot' this BOL means login having dbcreator server role.