arraydp[0] è un semplice puntatore a carattere, ma né il compilatore (staticamente) né il sistema operativo (dinamicamente) hanno allocato spazio per la stringa... quel puntatore contiene un indirizzo casuale, non l'indirizzo di un'area di memoria opportunamente allocata. Quando vai a leggere la stringa da tastiera, stai quindi provando a scrivere in un'area di memoria arbitraria e questo ti causa il segmentation fault.

Nel secondo esempio invece non hai problemi perché appunto hai allocato memoria staticamente per dieci caratteri (in realtà 9 più il terminatore) quindi la lettura va a buon fine, a meno che la stringa immessa non sia più lunga dello spazio allocato (in quel caso, incorri in problemi simili a quelli del caso precedente).