DataFrames in PyStan seems essential if PyStan is going to match behavior in RStan (e.g., provide something equivalent to
as.data.frame(fit)). And using pandas might well provide a more pleasant user (and developer) experience because it allows PyStan to use tabular data with named columns.
Pandas is a serious dependency (9MB compressed source, 14MB binary wheel). It does have a stable API and binary wheels are available for every platform. (When PyStan was started, things were changing a bit faster and binary wheels did not exist.)
A hard dependency on pandas is a serious change. If anyone has objections or strong feelings about this, please post something.