To begin with, the perl used in Solaris is 32 bit and the Linux one 64 bit. They are also different versions (v5.12.3 vs v5.10.1).
But the main difference is probably in the linux version mapping /usr/lib/locale/locale-archive, a 86M file, while in Solaris it seems to be using /usr/lib/locale/en_US.UTF-8/en_US.UTF-8.so.3, /usr/lib/locale/en_US.UTF-8/en_US.UTF-8.so.3 and /usr/lib/locale/en_US.UTF-8/libc.so.1 instead.
From locale-gen(8): Locale data files can be stored either in a single archive file, /usr/lib/locale/locale-archive, or in a deep tree where individual files are stored under /usr/lib/locale/<locale_name>/LC_*.
As all processes will be sharing the same locale-archive file, the two methods shouldn't matter too much for memory usage, although locale-archive will probably bite us when dumping core.