Shortcode: How to add custom posts?

Correct. post__in requires an array but the id parameter in [video-course limit=8 id=”418, 1186″] is passed in as a string, so in your shortcode, you would have to parse it into an array in order to use it:

if ( !is_array($id) ) {
    // If $id is not an array (not your default value in your example) 
    // then simultaneously parse it into an array and trim white space:
    $id = array_map('trim', explode(',', $id));
}

Then you can use:

'post__in' => $id