@gcb Sorry, something ate all-important quotes the first time around. Here's a correction:
% echo $((x+1))
% echo $PATH
(The original `x=(PATH=2)` without quotes doesn't actually perform any eval.)
Does it make sense now? This is indeed quite subtle.
"..things that can be parsed as variable names are treated as variable names in arithmetic contexts. ..bash does this *recursively* until it gets to an integer, or to something that can't be parsed as either an integer or a variable name."
OMG. This is _not_ documented.