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