Because Canvas property gives access to the canvas of the system. It is the same as TBitmap.Canvas. There is not much control over how it renders things, it often does not support antialiasing and does not provide transparency. Also it is slower to use it because switching from direct pixel access to the system canvas need some intermediate processing.
CanvasBGRA property uses BGRABitmap functions, and thus provides antialiasing and transparency. It can be used along with direct pixel access without any restriction. So it generally better to use CanvasBGRA.
However, sometimes, it is necessary to use system functions, hence Canvas property is still here. Also it was here before and for backwards compatibility, it is still here.