print не является "настоящей" функцией (это конструкция языка), поэтому заключать аргументы в скобки необязательно.
Цитата из мануала.
То есть он будет выводить все до точки с запятой, а не то что у него находится в скобках. Поэтому второе выражение будет выглядеть как $a = print "3" + 1; echo ++$a;
Отсюда и результат.