Error Control -
Why error control in Transport layer when it is in DLL - As DLL is visited twice and network layer only once at every router. Sequence in which these are visited at the routers is DLL -> Network Layer -> DLL. So if any error occured at the network layer like modification of packet or packet lost due to malfunction of router or any other reason, then these errors will not be detected by DLL.
Why error control in DLL when it is in Transport layer - If error will be detected at the transport layer of destination,than whole packet will be sent again.This might result in wastage of computing time and bandwidh to a much larger extent then to detect error in the frame in DLL of the upcoming node in the route just after the error has occured. So only the garbled frames(not the whole packet) will be sent again and only for the one hop.
Flow Control -
Context of flow control at DLL and transport layer is completely different. Flow control at DLL includes frames which might not be from one process or even from one node.There may be buffer overflow at DLL of intermediate routers with or without having buffer overflow at destination machines transport layer.