Ordering stylesheet above using functions.php

You should not be outputting anything on the wp_enqueue_scripts hook, just enqueueing. Move your css output to a function hooked to wp_head with a lower priority than 8, which is when the enqueued styles are printed in wp_head:

function folio_enqueue_css() {  
    wp_enqueue_style( 'theme', get_template_directory_uri() . '/assets/css/style.css', false, '1.0', 'all' );
}
add_action( 'wp_enqueue_scripts', 'folio_enqueue_css', 1 );

function folio_dynamic_css() {
    ob_start();
    echo '<style type="text/css">';
    # css styles here
    echo '</style>';
    # compress CSS
    $output = ob_get_clean();
    echo preg_replace('/^\s+|\n|\r|\s+$/m', '', $output) ."\n"; 
}
add_action( 'wp_head', 'folio_dynamic_css', 20 );