Arrow functions are defined like this:
ArrowFunction[In, Yield] :
ArrowParameters[?Yield] [no LineTerminator here] => ConciseBody[?In]
ConciseBody[In] :
[lookahead ≠ { ] AssignmentExpression[?In]
{ FunctionBody }
And throw is an statement:
ThrowStatement[Yield] :
throw [no LineTerminator here] Expression[In, ?Yield] ;
Then the first ConciseBody body syntax won't work because AssignmentExpression doesn't include statements:
AssignmentExpression :
YieldExpression
ArrowFunction
LeftHandSideExpression = AssignmentExpression
LeftHandSideExpression AssignmentOperator AssignmentExpression
BitwiseANDExpression : BitwiseANDExpression & EqualityExpression
BitwiseXORExpression : BitwiseXORExpression ^ BitwiseANDExpression
BitwiseORExpression : BitwiseORExpression | BitwiseXORExpression
If you use braces, then the inner part of ConciseBody will be a FunctionBody, which is a list of statements. So a ThrowStatement is allowed.