Because aDialog is not assigned when an exception is raised inside TMyDialog.Create. That causes Free called for an uninitialized variable inside the finally block.
A workaround would be to set aDialog to nil before the try, but the cleaner way is to move the Create outside the try-finally.