In reply to Ulrich.

The API to detect if a widget is being use is is_active_widget. shortcodes are a little more complex but removing a JS/CSS just because you at one point in time do not have the shortcode or widget on page is idiotic because in an hour you might want to have it but what is the chance you will remember to remove it from the "bad assets" list?

It is actually not hard at all for a plugin or a theme author to write proper code. No excuses should be accepted for bad one. If it is hard to do things properly with ACF then guess what, just don't use ACF.