Как происходит выделение памяти?
Память выделяется блоками с некоторым минимальным размером. При создании переменной $a было выделено 32 байта. В сумме переменные $a, $b и $c занимают 22 байта, с выравниванием - 24 байта. Соответственно, дополнительной памяти под них не требовалось.
При создании массива память была запрошена, скорее всего, не только под сам массив, но и для подгрузки функции range.
Память запрашивается когда ее становится мало, и с некоторым запасом, чтобы не просить ее при каждой операции, это добавляло бы тормоза.
Изначально ее выделяется с запасом, часто даже скрипт отрабатывает и ни разу не увеличивает память под себя, а так можете попробовать memory_get_usage(1) там вообще будет стабильно 2 мегабайта, если что-то жрущее не запустить, то скрипт не запросит даже памяти себе еще.