PHPs syntax is defined in zend_language_parser.y, and it simply doesn't define any more complex expressions for the new operator:
new_expr:
T_NEW class_name_reference ctor_arguments
{ $$ = zend_ast_create(ZEND_AST_NEW, $2, }
| T_NEW anonymous_class
{ $$ = $2; }
Where class_name_reference is:
class_name_reference:
class_name { $$ = $1; }
| new_variable { $$ = $1; }
And new_variable allows for a limited set of variable expressions:
new_variable:
simple_variable
{ $$ = zend_ast_create(ZEND_AST_VAR, $1); }
| new_variable '[' optional_expr ']'
{ $$ = zend_ast_create(ZEND_AST_DIM, $1, $3); }
| new_variable '{' expr '}'
{ $$ = zend_ast_create(ZEND_AST_DIM, $1, $3); }
| new_variable T_OBJECT_OPERATOR property_name
{ $$ = zend_ast_create(ZEND_AST_PROP, $1, $3); }
| class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable
{ $$ = zend_ast_create(ZEND_AST_STATIC_PROP, $1, $3); }
| new_variable T_PAAMAYIM_NEKUDOTAYIM simple_variable
{ $$ = zend_ast_create(ZEND_AST_STATIC_PROP, $1, $3); }
// Copyright (c) 1998-2015 Zend Technologies Ltd., the Zend license 2.00
Which is why you can't have string expressions there. (It was never extended, because the trivial instantiations and $classvarnames are often sufficient. So the allowed syntax is mostly the same as in PHP3, when it was introduced.)
T_NEW class_name_reference|new_variable ctor_arguments. It only allows literal names, or variables, and some variable expressions, but not string expressions.