I'd recommend using a top-view of course, and then snapping objects to an invisible grid for collision.
You could even store the objects in a 3d array, and then check to see what positions are empty for changing the objects shape.
for example, if the position above, and diagonally to the bottom-left were taken, then you could morph your piece to fit. If you keep your pieces invisible, then you could have the user draw lines in 3D using particles or draw_line() functions...