The sad truth is that many popular email clients are in violation of pertinent RFCs.
Indeed, as you surmise, filenames in MIME body parts should use RFC2231, but many implementations out in the wild use RFC2047 or a number of other informal, ad-hoc, or at worst indeterminable filename encodings.
As for the "why", I don't really think this is answerable. Fundamentally I think we can't do better than guess it's a mistake at some level.
Common and easily identified incorrect encodings seem to work fairly transparently between popular clients; but by definition, failure to adhere to the specification removes any guarantee that the recipient can correctly guess what was intended.
For reference, here is a model message which should hopefully pass validation (-:
From: me <tripleee@example.org>
To: =?utf-8?B?G=C3=B6del?= <goedel@example.net>
Subject: File name and recipient are identical,
but encoded differently
Mime-Version: 1.0
Content-type: application/octet-stream;
name*=UTF-8''G%C3%B6del
Content-disposition: attachment;
filename*=UTF-8''G%C3%B6del
Content-transfer-encoding: base64
R8O2ZGVsCg==
For the record, the Content-Type:
header's name
parameter is superseded by the filename
parameter of the Content-Disposition:
header, but many implenentations still conservatively specify both, in case some client somewhere still doesn't grok Content-Disposition: