Was there any purpose in changing the signature of a transaction?
Or it was a bug before segregated witness?
Does segregated witness disable some wanted feature?
By using sighash flags you can flag a transaction to intentionally make specific parts of it modifiable after signing it. This kind of intentional malleability is a useful, if not often used, feature and isn't changed by segwit.
Malleability in the SIGHASH_ALL was simply a design flaw and based on all the issues that the original software had with it appears to have been unintentional and unrealized at the time of the protocol's release.
The main origins of malleability in typical transactions arise from effects that aren't especially visible while writing the software-- e.g. that pushes could be serialized in different ways, or that there were multiple distinct valid signatures of the same data.