MEMSIZ won't tell you how much flash is available. It only tells how much flash is visible in nonpaged 64k CPU address space. For most parts it's fixed at 48k. If 64k flash parts come say with 4k of RAM, and 128k with 8k, then you may try to use this information to determine the amopunt of flash.
Of course PARTID uniquely points to specific maskset, which can be only 64k, or only128k etc. The problem is you software may not know anything about new masksets.
Also for all non-X S12 parts (except weird new S12P): If you read from page 3D the same data like from page 3F, then it's 32k part. Else, if pages 3B and 3F are the same, then it's 64k part. Else if pages 37 and 3F are the same, then it's 128k part etc.
But... all these mathods can't tell you what's printed on your chip. Frescale sometimes sells bigger parts (like E128) as smaller parts (like E64).