customize_register is hooked to
wp_loaded which runs on the front end too, but when in the frontend I access the global wp_customize variable, it's empty. I'm wondering, does WordPress removes the registered settings and section when the site is viewed? Is there a way to access the registered options in the body_class hook for example?
Yes this right. The var is only for customize the theme and works not in frontend, overhead and not usefull. After the user customize the theme, than was saved in options. Use the default functions to get the data, like the function get_option().
See also this theme file as example. It add stylesheets in frontend and use the data from the customizer. But this class use a method from the parent class and tbis method use get_option() to get the data.