Passing dynamic options from backend to frontend

By default, options are auto-loaded. So all options with autoload: yes will be fetched very early. Your option will not need an additional query.

Also, database access is often faster and more reliable than file access. The options table is also usually included in database backups, and it can be exported in multiple formats. So stick with options.

What you should do: escape the URL. It might have been compromised, so …

if ( ! empty ( $options['div_background_url'] )
{

    $section_background_url = esc_url( $options['div_background_url'] );

    echo "<section style="background-image: url($section_background_url);"></section>";
}

You could move the custom styles to one style element in the head element.