Graphics capabilities stuff is very much flawed in the current implementation unfortunately.
What platform are you targeting? For OpenGL, GraphicsProfile is not used currently. For DX, the GraphicsProfile determines what feature levels are added, which determine the capabilities of the GraphicsDevice, so in this case you can try to create a HiDef device and if that fails fall back to Reach. Devices that support DX11 will support HiDef (which is almost all of them currently). You can use one code path for all platforms since it doesn’t make a difference for OpenGL platforms.
If you’d like to help out in improving the implementation, let me know There’s a lot of work to be done, but I don’t think it’s particularly hard.
This is a CPU operation, so GraphicsProfile won’t matter here.
For DX, minimum capabilities for both GraphicsProfiles can be found in this blog post by XNA hero Shawn Hargreaves. That also shows you of where GraphicsProfile matters.
EDIT: Also, when you do a graphics operation in MG, the capabilities of the device aren’t properly checked beforehand, so you might get unexpected native errors